如何独立于语言更改时间选择器的格式
How to change time picker's format independent of language
有人知道我如何使用任何语言的时间选择器的 AM/PM 格式吗?
该应用程序有英语和罗马尼亚语,当使用罗马尼亚语时,时间选择器使用 24 小时格式,但我需要 AM/PM.
我没有找到任何方法来为其设置语言环境,所以我有点卡住了。
来自 MediaQuery.of(context)
的 TimePickerDialog
gets its format。
如 documentation for showTimePicker 所示,您可以将 builder
传递给 showTimePicker
以强制使用 24 小时格式。
您可以使用当前的 Locale
选择时间格式。
final time = showTimePicker(
context: context,
initialTime: const TimeOfDay(hour: 10, minute: 47),
builder: (BuildContext context, Widget? child) {
Locale locale = Localizations.localeOf(context);
final force24HourFormat = locale.countryCode == 'RO';
return MediaQuery(
data: MediaQuery.of(context).copyWith(
alwaysUse24HourFormat: force24HourFormat,
),
child: child!,
);
},
);
由于 Filip 没有编辑他的答案,我将自己用解决方案给出答案。
showTimePicker 需要在函数的构建器方法中将 alwaysUse24HourFormat 设置为 true 并将区域设置更改为 en-US。
不做任何一个都做不到。
所以,正确的解决方案是:
showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (BuildContext context, Widget? child) => MediaQuery(
data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: false),
child: Localizations.override(
context: context,
locale: const Locale('en', 'US'),
child: child!,
),
),
);
还有一个未解决的 Github 问题,for this issue.
有人知道我如何使用任何语言的时间选择器的 AM/PM 格式吗?
该应用程序有英语和罗马尼亚语,当使用罗马尼亚语时,时间选择器使用 24 小时格式,但我需要 AM/PM.
我没有找到任何方法来为其设置语言环境,所以我有点卡住了。
来自 MediaQuery.of(context)
的 TimePickerDialog
gets its format。
如 documentation for showTimePicker 所示,您可以将 builder
传递给 showTimePicker
以强制使用 24 小时格式。
您可以使用当前的 Locale
选择时间格式。
final time = showTimePicker(
context: context,
initialTime: const TimeOfDay(hour: 10, minute: 47),
builder: (BuildContext context, Widget? child) {
Locale locale = Localizations.localeOf(context);
final force24HourFormat = locale.countryCode == 'RO';
return MediaQuery(
data: MediaQuery.of(context).copyWith(
alwaysUse24HourFormat: force24HourFormat,
),
child: child!,
);
},
);
由于 Filip 没有编辑他的答案,我将自己用解决方案给出答案。
showTimePicker 需要在函数的构建器方法中将 alwaysUse24HourFormat 设置为 true 并将区域设置更改为 en-US。
不做任何一个都做不到。
所以,正确的解决方案是:
showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (BuildContext context, Widget? child) => MediaQuery(
data: MediaQuery.of(context).copyWith(alwaysUse24HourFormat: false),
child: Localizations.override(
context: context,
locale: const Locale('en', 'US'),
child: child!,
),
),
);
还有一个未解决的 Github 问题,for this issue.