Flutter GetX 报错: Unhandled Exception: setState() or markNeedsBuild() called during build.
这个错误是因为在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()导致的错误。
原文地址: https://www.cveoy.top/t/topic/lBk3 著作权归作者所有。请勿转载和采集!