我有Flutter多语言应用程序。它具有语言选择器,可以从预定义列表中选择一种语言。 我成功处理了文本标签的加载。 但是,我有两个主要的类,当用户更改语言环境时,我必须在其中手动设置语言环境:
DateTime
,尤其是其格式化方法,例如DateFormat.MMMEd([locale])
。但是,这很容易,因为它支持使用语言环境作为参数。我没问题; TimeOfDay
-它具有format(context)
方法,但是此方法根据TimeOfDay
方法在内部格式化MaterialLocalizations.formatTimeOfDay
实例以格式化时间,而我看不到当前如何通过选定的应用语言环境。所以我的问题基本上是执行TimeOfDay.format
方法时如何设置语言环境?
与上述相关的另一个是showTimePicker
,但我想两个查询都将具有相同的解决方案。
答案 0 :(得分:0)
我在语言环境上遇到了同样的问题,而且我发现最好不要依赖flutter的语言环境。我正在使用shared_preferences库来保存用户选择的当前语言环境,并且可以在整个应用程序中访问它。因此,基本上,您最好在用户决定语言时将语言环境保存为共享首选项。希望对您有帮助
答案 1 :(得分:0)
实际上,有两个缺失的片段可以解决此问题:
position: absolute;
margin: 0 auto;
left: 0;
right: 0;
top: 200px; // change this as you want
width: 450px; // change this as you want
margin-left: auto;
margin-right: auto;
时设置locale
的值,例如:
MaterialApp
MaterialApp(
title: Env.value.appName,
locale: allTranslations.locale,
...
);
时,我必须调用locale
并重新构建应用程序,因此要正确传播新的语言环境。仅此而已。