convertNumberToArabicWords function

String convertNumberToArabicWords(
  1. int number
)

Implementation

String convertNumberToArabicWords(int number) {
  /// MODIFY CODE ONLY BELOW THIS LINE

  if (number == 0) return 'صفر';

  // Lists for units, tens, and special numbers
  final arabicUnits = [
    'صفر',
    'واحد',
    'اثنان',
    'ثلاثة',
    'أربعة',
    'خمسة',
    'ستة',
    'سبعة',
    'ثمانية',
    'تسعة'
  ];
  final arabicTens = [
    'عشرة',
    'عشرون',
    'ثلاثون',
    'أربعون',
    'خمسون',
    'ستون',
    'سبعون',
    'ثمانون',
    'تسعون'
  ];
  final specialNumbers = {
    11: 'أحد عشر',
    12: 'اثنا عشر',
    13: 'ثلاثة عشر',
    14: 'أربعة عشر',
    15: 'خمسة عشر',
    16: 'ستة عشر',
    17: 'سبعة عشر',
    18: 'ثمانية عشر',
    19: 'تسعة عشر'
  };

  String result = '';

  // Handle billions
  if (number >= 1000000000) {
    int billions = number ~/ 1000000000;
    result += '${convertNumberToArabicWords(billions)} مليار';
    number %= 1000000000;
    if (number > 0) result += ' و ';
  }

  // Handle millions
  if (number >= 1000000) {
    int millions = number ~/ 1000000;
    result += '${convertNumberToArabicWords(millions)} مليون';
    number %= 1000000;
    if (number > 0) result += ' و ';
  }

  // Handle thousands
  if (number >= 1000) {
    int thousands = number ~/ 1000;
    result +=
        thousands == 1 ? 'ألف' : '${convertNumberToArabicWords(thousands)} ألف';
    number %= 1000;
    if (number > 0) result += ' و ';
  }

  // Handle hundreds
  if (number >= 100) {
    int hundreds = number ~/ 100;
    result += hundreds == 1
        ? 'مئة'
        : hundreds == 2
            ? 'مئتان'
            : '${arabicUnits[hundreds]} مئة';
    number %= 100;
    if (number > 0) result += ' و ';
  }

  // Handle numbers between 10 and 19
  if (number >= 10 && number < 20) {
    result += specialNumbers[number]!;
    return result; // Early exit to avoid further processing
  }

  // Handle tens
  if (number >= 20) {
    int tens = number ~/ 10;
    result += arabicTens[tens - 1];
    number %= 10;
    if (number > 0) result += ' و ';
  }

  // Handle units
  if (number > 0) {
    result += arabicUnits[number];
  }

  return result;

  /// MODIFY CODE ONLY ABOVE THIS LINE
}