Money.fromString constructor
Money.fromString(
- String? yuanStr, {
- PrecisionMode precisionMode = PrecisionMode.round,
- NullValueHandling nullValueHandling = NullValueHandling.returnZero,
从字符串初始化(支持空字符串、带空格、货币符号)
Implementation
factory Money.fromString(String? yuanStr, {PrecisionMode precisionMode = PrecisionMode.round, NullValueHandling nullValueHandling = NullValueHandling.returnZero}) {
// 处理 null/空字符串
if (yuanStr == null || yuanStr.trim().isEmpty) {
if (nullValueHandling == NullValueHandling.throwError) {
throw ArgumentError("yuanStr 不能为 null 或空");
}
return zero;
}
// 清理字符串:去除空格、货币符号(支持 ¥、$、€)
final cleanedStr = yuanStr.trim().replaceAll(RegExp(r'[¥$€,]'), '').replaceAll(' ', '');
// 解析为 num
final yuan = double.tryParse(cleanedStr);
if (yuan == null) {
throw FormatException("无法解析金额字符串:$yuanStr");
}
return Money.fromYuan(yuan, precisionMode: precisionMode);
}