getCurrencyMeta static method

CurrencyMeta getCurrencyMeta(
  1. String castTo, {
  2. required String value,
  3. void onChanged(
    1. num? value
    )?,
})

Get the currency meta data

Implementation

static CurrencyMeta getCurrencyMeta(
  String castTo, {
  required String value,
  void Function(num? value)? onChanged,
}) {
  final code = castTo.replaceFirst('currency:', '');
  final def = _currencyDefinitions[code];

  if (def == null) {
    throw Exception('Currency not supported: $code');
  }

  final symbol = def.symbol;
  String defaultValue;
  CurrencyInputFormatter formatter;

  switch (def.position) {
    case _SymbolPosition.leading:
      defaultValue = '$symbol$value';
      formatter = CurrencyInputFormatter(
        onValueChange: onChanged,
        leadingSymbol: symbol,
      );
    case _SymbolPosition.leadingWithSpace:
      defaultValue = '$symbol $value';
      formatter = CurrencyInputFormatter(
        onValueChange: onChanged,
        leadingSymbol: '$symbol ',
      );
    case _SymbolPosition.trailing:
      defaultValue = '$value$symbol';
      formatter = CurrencyInputFormatter(
        onValueChange: onChanged,
        trailingSymbol: symbol,
      );
    case _SymbolPosition.trailingWithSpace:
      defaultValue = '$value $symbol';
      formatter = CurrencyInputFormatter(
        onValueChange: onChanged,
        trailingSymbol: ' $symbol',
      );
  }

  return CurrencyMeta(
    symbol: symbol,
    formatter: formatter,
    initialValue: defaultValue,
  );
}