原来的旧项目在做状态管理时都是使用的provider插件, 新项目改用更好用, 功能更全面的GetX, 其中功能有很多, 我在项目中常用的功能有多语言、状态刷新、状态监听、获取信息等
1、多语言
多语言的用法主要是系统文字主动切换 和获取当前语言用于网络数据展示:
# 状态管理
get: ^4.6.5
// 引入头文件
import 'package:get/get.dart';
中英文切换
Get.updateLocale( const Locale("en", "US"));
Get.updateLocale( const Locale("zh", "CN"));
获取当前语言
String cl = Get.locale.languageCode; // US
2、状态刷新
第一步: 要在UI构建时使用GetBuilder进行注册,
其中参数id是被监听的Key
第二步: 构建Controller 继承自GetxController, 并实现update进行状态刷新
static const String nCoins = 'nCoins';
class WalletController extends GetxController {
// 调用此方法触发UI的刷新
updateData() {
update([nCoins]);
}
}
3、状态监听
状态监听也是常用的, 但是其他的博主都很少提到的功能, 一般用于异步监听在其他页面之行了某个操作后在当前页面继续执行逻辑
// walletAccountCreated为被监听的ID
_walletController.addListenerId('walletAccountCreated', () async {
})
// 触发监听
update(['walletAccountCreated']);
4、获取信息
一般用于全局信息调用, 如用户信息用户状态等的修改和读取