使用插件 Flutter Intl 来是实现国际化。通过我个人实践,通过该插件来实现会简单很多。
自动切换语言(跟随系统语言):
在AS中 command+, 打开设置界面。搜索Flutter Intl并安装
添加依赖
dependencies:
...
flutter_localizations:
sdk: flutter
intl: ^0.17.0
dev_dependencies:
...
intl_generator: 0.2.1
然后使用插件:
会在lib目录下增加 generated 和 l10n两个包
图中的zh_Hans_CN添加方法。
然后输入:zh_Hans_CN,点击OK即可(其他语言也是该步骤)
接下来。到入口文件(main):引入头文件
import 'package:flutter_localizations/flutter_localizations.dart';
设置以下代码
然后找到这两个文件:
intl_en:
{
"title_home": "Home",
"title_category": "Category",
"title_setting": "Setting"
}
intl_zh_Hans_CN:
{
"title_home": "首页",
"title_category": "分类",
"title_setting": "设置"
}
两个文件中的JSON的KEY要一致。Value为对应的语言文字。
在需要使用的地方引入头文件,然后:
S.of(context).title_home
到这里,自动识别系统语言改变应用语言已经结束,但是不改变系统语言的情况下改变应用还未实现。下面继续:
手动切换语言:
经过在网上找资料切换语言需要用到状态管理的知识点。 使用状态管理插件GetX: 配置一下。然后 Pub get。
dependencies:
...
intl: ^0.17.0
get: ^4.6.1
在入口引入(main)
import 'package:get/get.dart';
然后再上面代码的基础上加上红框中的代码:
这样就配置好了。那么怎么切换呢:
接下来我有个问题:就是App内部手动切换了语言之后。然后再更改系统语言会怎么样,会不会跟随系统语言? 经过编译,答案是会。还是挺好用了。结束!