【发布时间】:2021-12-17 23:05:07
【问题描述】:
我正在尝试将 GetX Builder 与控制器中的 bool 结合使用,以显示加载微调器,同时获取数据,然后再获取数据。
将更新打印到 bool 表明它完成了加载并更改了变量,但 UI 从未更新以反映这一点。
控制器
class AuthController extends GetxController {
//final RxBool isLoading = true.obs;
//var isLoading = true.obs;
final Rx<bool> isLoading = Rx<bool>(true);
setLoading(bool status) {
isLoading.value = status;
print(isLoading.value);
update();
}
fetchUserData() async {
setLoading(true);
_firebaseUser.bindStream(_auth.authStateChanges());
if (_auth.currentUser != null) {
bool profileRetrieved =
await FirestoreDB().getUserProfile(_auth.currentUser!.uid).then((_) {
return true;
});
setLoading(!profileRetrieved);
}
}
}
个人资料页面
class ProfileCard extends StatelessWidget {
const ProfileCard({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return GetBuilder<AuthController>(
init: AuthController(),
initState: (_) => AuthController().fetchUserData(),
builder: (controller) {
if (controller.isLoading.value) {
return const Center(child: CircularProgressIndicator());
}
return Container(...);
},
);
}
}
作为更广泛 UI 的一部分,该小部件在另一个小部件中被调用。如果您需要查看这些和/或其他任何内容,请告诉我。
如您所见,我尝试了不同的设置布尔值的方法,但似乎没有一种方法会触发构建器中 UI 的更改。
可能做了一些愚蠢的事情,但我尝试了几种不同的方法,并四处寻找有类似问题但无法破解的人。
提前致谢。
【问题讨论】:
标签: flutter dart flutter-getx