Flutter(十二)| Get包的国际化
最近在Flutter的开发中,学习使用了get(https://pub.flutter-io.cn/packages/get),关于get包的详细功能有机会再和大家展开,这里主要介绍一下get包的国际化功能。
localizations.dart
在根目录下面新建一个localizations.dart
文件,这个文件就是把之前app_en.arb和app_zh.arb合成一个文件,代码如下 :
import 'package:get/get.dart';
class AppLocalizations extends Translations {
@override
Map<String, Map<String, String>> get keys => {
'zh_CN': {
"generate": "生成",
"lowercaseLetter": "小写字母",
"uppercaseLetter": "大写字母",
"arabicNumeral": "阿拉伯数字",
"specialCharacter": "特殊字符",
"length": "长度",
"randomPassword": "随机密码",
"passwordClipboard": "密码已经复制到剪贴板"
},
'en_US': {
"generate": "Generate",
"lowercaseLetter": "Lowercase Letter",
"uppercaseLetter": "Uppercase Letter",
"arabicNumeral": "Arabic Numeral",
"specialCharacter": "Special Character",
"length": "Length",
"randomPassword": "Random Password",
"passwordClipboard": "The password has been copied to the clipboard"
}
};
}
main.dart
修改main.dart文件,把build中的代码替换为下面的代码:
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
statusBarColor: Colors.transparent,
));
return GetMaterialApp(
debugShowCheckedModeBanner: false,
translations: AppLocalizations(),
locale: Get.deviceLocale,
home: RandomPasswordPage(),
);
}
GetMaterialApp是get包提供的一个函数。
translations:就是读取我们定义的AppLocalizations。
locale:就是读取系统的语言,这里使用Get.deviceLocale获取设备的语言,这样如果设备更改了语言,应用也会跟随变化,当然前提是我们的AppLocalizations类中定义了对应的语言。
random_password.dart
准备好语言环境之后,就可以修改对应的代码部分,把之前AppLocalizations.of(context).randomPassword
直接替换成'randomPassword'.tr
,这样当执行到tr关键字时,系统会去AppLocalizations寻找对应的key(这里就是randomPassword),然后显示对应的value值。
get
get包提供的国际化非常方便,而且直接融入了dart代码。
get的功能非常强大,应该是Flutter开发中必须掌握的package,后面我会把其他功能一一的展开介绍。
0