無(wú)論是什么樣的應(yīng)用,都還是需要最基礎(chǔ)的數(shù)據(jù)來(lái)支撐的,而且不同的頁(yè)面之間可能需要共享數(shù)據(jù)狀態(tài),這就顯得數(shù)據(jù)狀態(tài)管理非常有必要了。因?yàn)槲疫@里使用了get依賴庫(kù),所以就可以直接在項(xiàng)目中使用getx來(lái)管理狀態(tài),不想再使用別的框架了。而且getx使用起來(lái)也挺方便的。
在flutter中文網(wǎng)里面還是有許多狀態(tài)管理依賴庫(kù)推薦的:狀態(tài) (State) 管理參考 - Flutter 中文文檔 - Flutter 中文開(kāi)發(fā)者網(wǎng)站 - Flutter
但是我這里就講一下getx的使用,很簡(jiǎn)單,三步就可以完成使用。
get依賴包地址:get | Flutter Package
添加get依賴
在pubspec.yaml文件中添加所需要的第三方依賴庫(kù):
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
get: ^4.6.6
?
創(chuàng)建store
在項(xiàng)目目錄下面創(chuàng)建stores文件夾,用來(lái)管理全局的數(shù)據(jù)狀態(tài),可以通過(guò)分類將不同的狀態(tài)封裝在不同的dart文件中:
例如user.dart源代碼:
import 'package:get/get.dart';
class UserInfo extends GetxController {
// 用戶名字
var name = "".obs;
// 用戶密碼
var passwd = "".obs;
// 用戶年齡
var age = 0.obs;
// 用戶權(quán)限
var power = [].obs;
// 以下為周期函數(shù)
@override
void onInit() {
print('onInit');
super.onInit();
}
@override
void onClose() {
// 控制器綁定在路由上的話,路由銷(xiāo)毀則觸發(fā)
print('onClose');
super.onClose();
}
@override
void onReady() {
print('onReady');
super.onReady();
}
// 增加狀態(tài)管理的數(shù)值
void addAge() {
age.value++;
update(); // 調(diào)用obx更新數(shù)據(jù),不然數(shù)據(jù)不會(huì)更新
}
// 減少狀態(tài)管理的數(shù)值
void setName(String val) {
name.value = val;
update();
}
// 修改用戶密碼
void setPasswd(String pw) {
passwd.value = pw;
update();
}
// 配置用戶權(quán)限
void addPower(pws) {
var pwsTemp = [...power, ...pws];
power.value = pwsTemp;
}
// 清空狀態(tài)數(shù)據(jù)
void clear() {
name.value = "";
passwd.value = "";
age.value = 0;
power.value = [];
}
}
在頁(yè)面中引用?
在main.dart中使用GetMaterialApp創(chuàng)建的app才可以哦,使用后就可以到頁(yè)面中引入并使用了,直接使用即可,注意需要引入get:
import 'package:get/get.dart';
UserInfo user = Get.put(UserInfo());
如果想在頁(yè)面中使用這個(gè)狀態(tài)數(shù)據(jù):
Obx(() => Text("${user.age}")),
想要點(diǎn)擊按鈕設(shè)置里面的值:直接調(diào)用里面的方法就好
ElevatedButton(
onPressed: () {
print("添加Powers");
user.addPower([10]);
},
child: Text("添加Power:10")),
?
比如我在登錄頁(yè)面添加用戶名和密碼,到首頁(yè)就可以看到我的那些數(shù)據(jù):
首頁(yè)展示數(shù)據(jù):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-813478.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-813478.html
到了這里,關(guān)于flutter使用getx進(jìn)行數(shù)據(jù)狀態(tài)管理,實(shí)現(xiàn)頁(yè)面響應(yīng)式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!