这个错误是因为在build过程中调用了setState()或者markNeedsBuild()导致的,所以需要避免在build过程中调用这些方法。

正确的做法是在build完成后再进行更新状态的操作,可以使用WidgetsBinding的addPostFrameCallback方法来实现,如下所示:

class MyWidget extends StatelessWidget {
  final myController = Get.put(MyController());

  @override
  Widget build(BuildContext context) {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      // 在build完成后执行更新状态的操作
      myController.updateSomeState();
    });

    return Obx(() => Text(myController.someValue.value));
  }
}

在这个例子中,我们使用addPostFrameCallback方法来在build完成后执行更新状态的操作,这样就可以避免在build过程中调用setState()或者markNeedsBuild()导致的错误。

Flutter GetX 报错: Unhandled Exception: setState() or markNeedsBuild() called during build.

原文地址: https://www.cveoy.top/t/topic/lBk3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录