flutter - 更改应用程序语言后,showTimePicker 对话框带有 24 小时抖动
问题描述
我showTimePicker
在我的应用程序中使用。另外,我正在为我的颤振应用程序使用两种语言(英语' en '和西班牙语' es ')的国际化。
- 当前 showTimePicker 的代码:
Padding(
padding: EdgeInsets.all(2),
child: MaterialButton(
minWidth: double.infinity,
onPressed: () async {
TimeOfDay picked = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (BuildContext context, Widget child) {
return MediaQuery(
data: MediaQuery.of(context)
.copyWith(alwaysUse24HourFormat: false),
child: child,
);
},
);
},
child: Text(
S.of(context).set_time,
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).primaryColor, fontSize: 14),
),
),
),
我面临的问题是最初当我用英语运行我的应用程序时,它工作正常并显示timePicker和 12 小时格式。但是,当我从应用程序将应用程序语言更改为西班牙语时,它将开始显示timePicker和 24 小时格式。请在下面找到相同的屏幕截图。
1. App语言为英文时:
2. App语言更改为西班牙语时:
当我将supportedLocales
value 更改为Locale('es', '')
from时,我遇到了这个问题Locale('en', '')
。但我不知道如何解决这个问题。
解决方案
final dateTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.now(),
builder: (context, child) {
if (MediaQuery.of(context).alwaysUse24HourFormat) {
return child;
} else {
return Localizations.override(
context: context,
locale: Locale('en', 'US'),
child: child,
);
}
},
);