Flutter之GetX之国际化

发布时间 2023-04-05 14:16:43作者: R1cardo

Flutter之GetX之国际化

  1. GetMaterialApp中设置
GetMaterialApp(
    locale: Get.deviceLocale,
    translations: Messages(),
    fallbackLocale: const Locale("en_US"),
)

其中设置的locale为用Get.deviceLocale设置的设备语言

translations设置的为我们继承Translations的类

fallbackLocale设置当配置错误时使用的语言

  1. 创建Messages类继承Translations
class Messages extends Translations {
  @override
  Map<String, Map<String, String>> get keys => {
        'en_US': {
          'login': 'logged in as @name with email @email',
        },
        'zh_CN': {
          'login': '登录用户 @name, 邮箱账号 @email',
        }
      };
}
  1. 使用,直接在字符串后面加上.tr后缀
Text("login".tr)
  1. 支持带参数

在配置的Mapvalue中需要用参数配置的加上前缀@

使用

Text("login"
              .trParams({"name": "R1cardo", "email": "plume_mo@qq.com"}));
  1. 全局切换多语言

Get.updateLocale(const Locale("zh_CN"));