parse method

  1. @override
Decimal? parse(
  1. String? value
)
override

Implementation

@override
Decimal? parse(final String? value) {
  if (value.isNullOrBlank) {
    return null;
  }

  bool isNegative = value!.startsWith('-');

  String newValue = value.replaceAll('-', '');

  int sepPos = newValue.indexOf(decimalSeparator);

  String integerPart = '0';
  String decimalPart = '0';

  if (sepPos < 0) {
    integerPart = newValue;
  } else if (sepPos == 0) {
    decimalPart = super.strip(newValue);
  } else {
    integerPart = super.strip(newValue.substring(0, sepPos));
    decimalPart = super.strip(newValue.substring(sepPos));
  }

  if (decimalPart.length > precision) {
    decimalPart = decimalPart.substring(0, precision);
  }

  String str = '${isNegative ? '-' : ''}$integerPart.$decimalPart';

  return Decimal(
    precision: precision,
    doubleValue: double.tryParse(str) ?? 0,
  );
}