// 国际化配置
return GetMaterialApp(
title: "GetX",
translations: Messages(),
locale: Locale('zh', 'CN'), //设置默认语言
fallbackLocale: Locale("zh", "CN"), // 在配置错误的情况下,使用的语言
home: InternationalizationExample(),
);
Flutter 项目需要支持国际化,采用getx自带的国际化,简单快捷又方便。在我们使用系统自带MaterialApp来实现国际化配置,需要进行很多配置,而且还需要手动去依赖第三方组件,而使用GetX来实现国际化配置,你只需要一行代码即可实现切换,接下来我们看一下具体实现吧。
translations:国际化配置文件
locale:设置默认语言,不设置的话为系统当前语言
fallbackLocale:配置错误的情况下,使用的语言
// 国际化配置
return GetMaterialApp(
title: "GetX",
translations: Messages(),
locale: Locale('zh', 'CN'), //设置默认语言
fallbackLocale: Locale("zh", "CN"), // 在配置错误的情况下,使用的语言
home: InternationalizationExample(),
);
需要继承自Translations并重写keys方法。
import 'package:get/get.dart';
class Messages extends Translations {
@override
// TODO: implement keys
Map> get keys => {
'zh_CN': {
'hello': "你好, 世界"
},
'en_US': {
'hello': 'hello world'
}
};
}
import 'dart:ui';
import 'package:get/get.dart';
class MessagesController extends GetxController {
// 切换语言
void changeLanguage(String languageCode, String countryCode) {
var locale = Locale(languageCode, countryCode);
Get.updateLocale(locale);
}
}
MessagesController messagesController = Get.put(MessagesController());
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('hello'.tr, style: TextStyle(color: Colors.pink, fontSize: 30)),
ElevatedButton(
onPressed: () => messagesController.changeLanguage('zh', "CN"),
child: Text("切换到中文")
),
SizedBox(height: 20,),
ElevatedButton(
onPressed: () => messagesController.changeLanguage('en', "US"),
child: Text("切换到英文")
),
],
),
),
GetUtils 是getx为我们提供一些常用的工具类库,包括值是否为空、是否是数字、是否是视频、图片、音频、PPT、Word、APK、邮箱、手机号码、日期、MD5、SHA1等等。
以判断是否是邮箱、手机号、IPV4地址
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Padding(
padding: EdgeInsets.all(20),
child: TextField(
controller: textFieldController,
),
),
Padding(
padding: EdgeInsets.all(10),
child: ElevatedButton(
child: Text("判断是否是邮箱"),
onPressed: () async {
if (GetUtils.isEmail(textFieldController.text)) {
Get.snackbar("提示", "邮箱正确",
backgroundColor: Colors.greenAccent);
} else {
Get.snackbar("邮箱错误", "请输入正确的邮箱",
backgroundColor: Colors.pink);
}
},
),
),
Padding(
padding: EdgeInsets.all(10),
child: ElevatedButton(
child: Text("判断是否是手机号"),
onPressed: () async {
if (GetUtils.isPhoneNumber(textFieldController.text) &&
textFieldController.text.length == 11) {
Get.snackbar("正确", "手机号正确",
backgroundColor: Colors.greenAccent);
} else {
Get.snackbar("手机号错误", "请输入正确的手机号",
backgroundColor: Colors.pink);
}
},
),
),
Padding(
padding: EdgeInsets.all(10),
child: ElevatedButton(
child: Text("判断是否是IPv4"),
onPressed: () async {
if (GetUtils.isIPv4(textFieldController.text)) {
Get.snackbar("正确", "IPv4正确",
backgroundColor: Colors.greenAccent);
} else {
Get.snackbar("地址错误", "请输入正确的IPv4地址",
backgroundColor: Colors.pink);
}
},
),
),
],
),
),
Copyright © 2024 Flutter(flutterschool.cn)