The Money package provides a number of methods to parse a monetary amount:
You may also find Fixed.parse is useful for parsing decimal values which can then be used to create a Money instance.
Money.parse
Allows you to parse a string containing a monetary amount.
When using Money.parse you must know the currency of the monetary amount.
import 'package:money2/money2.dart';
import 'package:test/test.dart';
void main() {
test('Parse money', () {
/// Parse the amount using default pattern for AUD.
var t1 = Money.parse(r'10.00', code: 'AUD');
expect(t1.toString(), equals(r'$10.00'));
var t2 = Money.parse(r'$10.00', code: 'AUD');
expect(t1.amount, equals(Fixed.fromNum(10.00)));
/// Parse using an alternate pattern
var t3 = Money.parse(r'$10.00 AUD', code: 'AUD', pattern: 'S0.00 CCC');
expect(t1.amount, equals(Fixed.parse('10.00', scale: 2)));
});
}
Currency.parse
Parse a monetary amount for a known currency.
import 'package:money2/money2.dart';
import 'package:test/test.dart';
void main() {
test('parse with Currency', () {
/// Parse using a currency.
var t1 = CommonCurrencies().aud.parse(r'$10.00');
expect(t1.toString(), equals(r'$10.00'));
expect(t1.currency.code, equals('AUD'));
});
}
Currencies.parse
Allows you to parse a monetary amount using an embedded currency code to derive the currency.
import 'package:money2/money2.dart';
import 'package:test/test.dart';
void main() {
test('parse with unknown currency', () {
var t1 = Currencies().parse(r'$AUD10.00');
expect(t1.toString(), equals(r'$10.00'));
expect(t1.currency.code, equals('AUD'));
});
}
If you got this far you deserve a prize.
If you have enough money it's good to tout.
But a word to the unwise.
Spending it gladly can lead to a drought.