文章目录
- 1. 概念介绍
- 2. 使用方法
- 2.1 静态切换
- 2.2 动态切换
- 3. 示例代码
- 4. 内容总结
我们在上一章回中介绍了"readMore简介"相关的内容,本章回中将介绍如何在程序中切换语言.闲话休提,让我们一起Talk Flutter吧。
1. 概念介绍
我们这本章回中介绍的切换语言是指切换App程序当前使用的语言,比如App程序当前的语言为英文,我们可以把它切换成中文。在正常情况下App程序会跟随手机系统的
语言设置,之所以有这个切换语言的需求是因为iOS15以后的版本可以在设置中为每个App程序单独设置语言,而Andoird目前还不支持此功能。我们将在本章回中详细
介绍如何切换App程序的语言。
2. 使用方法
切换程序中的语言有两种方法:静态切换和动态切换,我们将在接下来的小节中详细介绍。
2.1 静态切换
程序中默认的语言设置由MaterialApp的locale属性控制,我们在程序中切换语言时修改这个属性就可以。不过这种方法需要在程序运行前指定语言,因此我们称它为
静态切换。这种方式不够灵活,我们就不详细介绍了。不过可以对它做一些修改:使用动态变量给locale属性赋值,然后在程序中动态修改这个变量的值,进而达到切换
语言的效果,在动态修改时最好通过状态管理的方式实现,比如我们在前面章回中介绍的Provider.
2.2 动态切换
我们还可以借助Flutter intl插件来切换语言,它可以在App程序运行的过程中切换语言,因此我们称它为动态切换。下面是详细的使用方法:
- 使用插件配置好程序支持的多种语言,详细参考第一百四十二回的内容;
- 使用插件中的load方法切换语言,该方法是静态方法,可以直接使用;
- 刷新页面,否则页面中使用文本的地方不会被修改,还会显示修改前的语言;
按照上面的方法切换程序中的语言后,只在当前程序运行时有效果,如果退出程序后再次进入程序仍然是和手机的系统语言保持一致。如果想持久化保存语言的设置,那么
我们需要把语言的配置信息保存在系统文件中,等到下次程序启动时从系统文件中读取保存的语言,并且把它赋值给MaterialApp的localen属性。
3. 示例代码
setState(() {S.load(const Locale('zh', 'zh'),);
});
上面的示例代码演示了如何把当前语言修改为中文的方法,修改完后同时更新了页面设置。我们可以把这个代码赋值给按钮的onPress属性,这样就可以在点击按钮的
时候修改系统语言。我在这里就不演示程序的运行效果了,建议大家自己动手去实践。
此外,我简单分析了插件中的代码,它本质上是使用intl的defaultLocalen属性来修改程序中的语言。intl是Flutter官方提供的插件,我们可以通过该插件获取和
修改程序中的语言。我们在这里就不介绍了,就当作留给大家的作业。
4. 内容总结
最后,我们对本章回的内容做一个全面总结:
- 程序的语言由MaterialApp的locale属性控制;
- 可以修改MaterialApp的locale属性来静态修改程序的语言;
- 可以通过Flutter intl插件的load方法动态修改程序的语言;
看官们,与"如何在程序中切换语言"相关的内容就介绍到这里,欢迎大家在评论区交流与讨论!