首页 > 解决方案 > 如何修复 Flutter 构建问题期间调用的 setState

问题描述

当用户转到详细信息屏幕时,我试图自动打开我的警告对话框,但由于某种原因,我在屏幕中的构建错误期间调用了 setState() 或 markNeedsBuild()(图片)。如果我能就如何解决此错误获得任何建议或帮助,我将不胜感激。

    return Scaffold(
        appBar: AppBarWidget(
          appBar: AppBar(),
          showReorder: false,
        ),
        body: BaseView<CardViewModel>(
          onDeactivate: (model) {},
          onDispose: (model) {},
          onModelReady: (model) {
            model.getCard();
          },
          builder: (context, model, child) {
            setState(() {
              isLargeScreen = false;
              if (model.cards.current != true) {
                if (model.cards.alreadyShow == false) {
                  Future.delayed(Duration.zero, () {
                    staticwarningDialog(context);
                  });
                }
              }
            });
            return _body(model, height, width, context, widget.cardName);
          },
        ));

在此处输入图像描述

标签: flutterflutter-layoutflutter-dependenciesflutter-webflutter-animation

解决方案


你可以移动你的setState方法来initState喜欢这个。记住不要在构建时使用 setState 方法。

@override
void initState() {
   super.initState();
   WidgetsBinding.instance.addPostFrameCallback(
     (_) {
      setState(() {
        // Your code
      });
    },
   );
}

推荐阅读