Как определить символ текущей локали для десятичной точки - PullRequest
0 голосов
/ 21 июня 2019

Как я могу определить символ для десятичного разделителя?Должен использоваться текущий языковой стандарт устройства.

1 Ответ

1 голос
/ 21 июня 2019

Вам необходимо использовать методы класса NumberFormat, доступные в библиотеке intl.

NumberFormat.decimalPattern форматирует число в соответствии с указанным языком.

например. это то, как вы можете получить локаль устройства и отформатировать число.

import 'package:intl/intl.dart' show NumberFormat;
import 'package:intl/number_symbols_data.dart' show numberFormatSymbols;
import 'dart:ui' as ui;

String getCurrentLocale() {
  final locale = ui.window.locale;
  final joined = "${locale.languageCode}_${locale.countryCode}";
  if (numberFormatSymbols.keys.contains(joined)) {
    return joined;
  }
  return locale.languageCode;
}

// ...

String dec = NumberFormat.decimalPattern(getCurrentLocale()).format(1234.567);
print(dec); // prints 1,234.567 for `en_US` locale

Однако, чтобы ответить на ваш первоначальный вопрос - вот функция, которая возвращает либо десятичный разделитель (если найден), либо пустую строку.

String getDecimalSeparator(String locale) {
  return numberFormatSymbols[locale]?.DECIMAL_SEP ?? "";
}

// ...

print(getDecimalSeparator(getCurrentLocale())); // prints `.` for `en_US` locale.

Дайте мне знать, помогло ли это.

...