Я хочу создать TextField во Flutter. TextField предназначен для десятичных чисел. Так что ставлю keyboardType: TextInputType.numberWithOptions(decimal: true)
. Теперь я получаю цифровую клавиатуру на iOS, но эта цифровая клавиатура имеет точку (.) вместо запятой (,). Язык устройства iOS — Немецкий.
Мое текущее TextField:
TextField(
key: Key("pricePerLiter"),
style: TextStyle(color: inputTextColor),
textAlign: TextAlign.end,
focusNode: pricePerLiterFocusNode,
keyboardType:
TextInputType.numberWithOptions(decimal: true),
decoration: inputDecoration.copyWith(
suffixText: "€", errorText: pricePerLiterError),
controller: pricePerLiterTextController,
onEditingComplete: () {},
onChanged: (value) {},
)
Моя локализация настроена следующим образом в моем приложении Material:
MaterialApp(
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
],
supportedLocales: [
const Locale('de', 'DE'),
],
home: MyHomePage(),
)
Что мне нужно изменить, чтобы получить цифровую клавиатуру с запятой (,) вместо точки (.)?
@KeertiPurswani Привет, спасибо за ваш комментарий, но я хочу использовать запятую (,) вместо точки (.) на клавиатуре. В Германии мы используем запятую (,) в качестве десятичного разделителя!
О, я этого не знал. Извиняюсь.
@NiklasRaab, ты нашел решение своей проблемы? У меня такой же, не могу найти как его починить...
В iOS вы должны включить локаль de (или любую другую локаль, кроме en_US) в настройках сборки ios даже для приложений флаттера. Откройте рабочее пространство ios/Runner.xc вашего флаттер-приложения с помощью Xcode. Выберите исполнителя проекта. На странице «Информация» вы увидите локали, включенные для вашего приложения, в разделе «Локализации». Добавьте сюда локаль (или любую другую). Пересоберите приложение (с помощью Xcode или Flutter, не имеет значения).
Посмотрите также здесь для другого подхода:
Вы изменили
keyboardType
, поэтому, очевидно, вы получите точку, чтобы иметь возможность вводить десятичное число. Не давайте тип, если вы не хотите, чтобы это произошло.