Flutter-TimeOfDay-如何设置语言环境

时间:2019-07-31 16:43:37

标签: flutter localization

我有Flutter多语言应用程序。它具有语言选择器,可以从预定义列表中选择一种语言。 我成功处理了文本标签的加载。 但是,我有两个主要的类,当用户更改语言环境时,我必须在其中手动设置语言环境:

  • DateTime,尤其是其格式化方法,例如DateFormat.MMMEd([locale])。但是,这很容易,因为它支持使用语言环境作为参数。我没问题;
  • TimeOfDay-它具有format(context)方法,但是此方法根据TimeOfDay方法在内部格式化MaterialLocalizations.formatTimeOfDay实例以格式化时间,而我看不到当前如何通过选定的应用语言环境。

所以我的问题基本上是执行TimeOfDay.format方法时如何设置语言环境?

与上述相关的另一个是showTimePicker,但我想两个查询都将具有相同的解决方案。

2 个答案:

答案 0 :(得分:0)

我在语言环境上遇到了同样的问题,而且我发现最好不要依赖flutter的语言环境。我正在使用shared_preferences库来保存用户选择的当前语言环境,并且可以在整个应用程序中访问它。因此,基本上,您最好在用户决定语言时将语言环境保存为共享首选项。希望对您有帮助

答案 1 :(得分:0)

实际上,有两个缺失的片段可以解决此问题:

  1. 在调用 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
  1. 当用户更改MaterialApp( title: Env.value.appName, locale: allTranslations.locale, ... ); 时,我必须调用locale并重新构建应用程序,因此要正确传播新的语言环境。

仅此而已。