安装
将 GetX 添加到你的 pubspec.yaml 文件中
dependencies:
get: ^4.6.5
在需要用到的文件中导入,它将被使用。
import 'package:get/get.dart';
国际化配置
在我们使用系统自带MaterialApp来实现国际化配置,需要进行很多配置,而且还需要手动去依赖第三方组件,而使用GetX来实现国际化配置,你只需要一行代码即可实现切换,接下来我们看一下具体实现。
translations: 国际化配置文件
locale: 设置默认语言,不设置的话为系统当前语言
fallbackLocale: 配置错误的情况下,使用的语言
main.dart
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:untitled/Message/MessagesController.dart';
import 'Message/Messages.dart';
void main(){
return runApp(Home());
}
class Home extends StatelessWidget {
MessagesController messagesController = Get.put(MessagesController());
Widget build(BuildContext context) {
return GetMaterialApp(
translations: Messages(),
locale: Locale('zh', 'CN'), //设置默认语言
fallbackLocale: Locale("zh", "CN"), // 在配置错误的情况下,使用的语言
home: Scaffold(
appBar: AppBar(
title: Text("国际化"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text('hello'.tr,),
ElevatedButton(onPressed: ()=>{
messagesController.changeLanguage('zh', 'CN')
}, child: Text("切换到中文")),
SizedBox(height: 20,),
ElevatedButton(onPressed: ()=>{
messagesController.changeLanguage('en', 'US')
}, child: Text("切换到英文"))
],
),
),
),
);
}
}
Messages.dart
import 'package:get/get_navigation/get_navigation.dart';
class Messages extends Translations {
// TODO: implement keys
Map<String, Map<String, String>> get keys => {
'zh_CN': {
'hello': "你好, 世界"
},
'en_US': {
'hello': 'hello world'
}
};
}
MessagesController.dart
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);
}
}