一、多语言配置
首先新建一个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
)
原文地址:https://www.jb51.cc/wenti/3287955.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。