formatToIndianWords static method

String formatToIndianWords(
  1. dynamic number, {
  2. String? currency,
})

Implementation

static String formatToIndianWords(dynamic number, {String? currency}) {
  if (number is! BigInt && number is! int) {
    throw ArgumentError("Input must be an int or BigInt.");
  }

  if (number == 0) return "Zero";

  List<String> parts = [];
  int groupIndex = 0;

  BigInt num = BigInt.parse(number.toString());

  while (num > BigInt.zero) {
    BigInt part = num % BigInt.from(1000);

    if (part != BigInt.zero) {
      String partWord = _convertThreeDigits(part.toInt());
      if (_indianUnits[groupIndex].isNotEmpty) {
        partWord += " ${_indianUnits[groupIndex]}";
      }
      parts.insert(0, partWord);
    }

    groupIndex++;
    num ~/= BigInt.from(1000);
  }

  String result = parts.join(" ").trim();

  if (currency != null && currencySigns.containsKey(currency)) {
    result = "${currencySigns[currency]} $result";
  }

  return result;
}