user9436741
user9436741

Reputation:

How to fix setState called during build issue in Flutter

I'm trying to open my warning dialog automatically when a user go to details screen but some reason I'm getting setState() or markNeedsBuild() called during build error in the screen (pic). I would be really appreciated if I can get any suggestion or help on how I should fix this error.

    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);
          },
        ));

enter image description here

Upvotes: 0

Views: 143

Answers (1)

ToraCode
ToraCode

Reputation: 432

You can move your setState method to initState like this. Remember don't use setState method on build.

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

Upvotes: 2

Related Questions