Money.fromString constructor

Money.fromString(
  1. String? yuanStr, {
  2. PrecisionMode precisionMode = PrecisionMode.round,
  3. 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);
}