首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振Getx构建器不更新UI

颤振Getx构建器不更新UI
EN

Stack Overflow用户
提问于 2021-11-03 14:55:08
回答 1查看 2.3K关注 0票数 1

我试图将GetX生成器与控制器中的bool结合起来,在获取数据时显示加载旋转器,然后在获取数据之后显示数据。

将更新打印到bool显示它完成了加载并更改了变量,但是UI从未被更新以反映这一点。

控制器

代码语言:javascript
复制
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);

    }
  }
}

配置文件页

代码语言:javascript
复制
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的一部分在另一个小部件中调用。如果你需要看那个和/或其他什么东西,请告诉我。

正如您所看到的,我尝试过不同的方法来设置bool,它们似乎都不会触发构建器中UI的更改。

也许我做了一些愚蠢的事情,但我尝试了几种不同的方法,并四处寻找那些有类似问题但却无法解决问题的人。

提前谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2021-11-05 18:53:48

您正在使用isLoading作为Rx<bool>。在这种情况下,需要将GetBuilder转换为GetX。不需要打电话给update()

  • GetBuilder用于非反应性、非Rx、简单的状态管理

  • GetX是reactive状态管理的

票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69827039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档