Flutter 全能型选手GetX —— 多语言配置/主题设置/离线缓存

使用篇 

 原理篇

一、多语言配置

首先新建一个Messages类继承Translations

class Messages extends Translations {
  @override
  Map<String, Map<String, String>> get keys => {
        "en_US": {
         Globalization.english: "english",
       
        },
        "zh_CN": {
         Globalization.english: "英语",
     
        }
      };
}


接着声明一个常量类来存放key,方便引用

class Globalization {
  static const String english = "english";
  
}

然后在GetMaterialApp里配置
 

GetMaterialApp(
      translations: Messages(),
      locale: const Locale('zh', 'CN'),
        fallbackLocale: Locale('en', 'US')
          ...
    );


translations 传入的就是我们定义好的继承自 Translations 的类的对象,locale 则是我们默认使用的语言,fallbackLocale 则是当我们默认语言资源没有时就会使用 fallbackLocale 配置的资源。

最好一步就是使用了。如下所示:

Text(Globalization.english.tr);

如果你想获取系统语言环境可以使用如下

return GetMaterialApp(
    locale: Get.deviceLocale,
);

如果你想改变语言环境可以设置如下

var locale = Locale('en', 'US');
Get.updateLocale(locale);


二、离线存储


GetX 可以缓存内容对象,以便在不同页面共享数据。使用的时候需要注意,需要先 put 操作再 find操作,否则会抛异常。

首先是内存缓存

Get.put(CacheData(name: '这是缓存数据'));
CacheData cache = Get.find();


GetX 提供了一个 get_storage 插件用于离线存储,与 shared_preferences 相比,其优点是纯 Dart 编写,不依赖于原生,因此可以在安卓、iOS、Web、Linux、Mac 等多个平台使用。GetStorage 是基于内存和文件存储的,当内存容器中有数据时优先从内存读取。同时在构建 GetStorage 对象到时候指定存储的文件名以及存储数据的容器。

GetStorage storage = GetStorage();
storage.write('name', 'river');
storage.read('name');


三、主题设置
 

设置为浅色主题Get.changeTheme(ThemeData.light());
设置为深色主题Get.changeTheme(ThemeData.dark());
 
放在一个onPressed中,根据Get.isDarkMode判断

Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark());

 GetMaterialApp中设置默认主题
 GetMaterialApp(
    theme:  ThemeData.light(),
    darkTheme: ThemeData.dark(),
    themeMode: ThemeMode.light
)


 

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值