Flutter GetX系列教程---国际化配置

安装

将 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);
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值