TokenAmount.fromEtherString constructor

TokenAmount.fromEtherString(
  1. String ether
)

Full precision from a decimal string (e.g. "1.5").

Implementation

factory TokenAmount.fromEtherString(String ether) {
  final parts = ether.split('.');
  final wholePart = BigInt.parse(parts[0]) * _etherScale;
  if (parts.length == 1) return TokenAmount._(wholePart);

  var fracStr = parts[1];
  if (fracStr.length > 18) {
    fracStr = fracStr.substring(0, 18);
  }
  fracStr = fracStr.padRight(18, '0');
  final fracPart = BigInt.parse(fracStr);

  final sign = ether.startsWith('-') ? -BigInt.one : BigInt.one;
  return TokenAmount._(wholePart.abs() * sign + fracPart * sign);
}