0

I'm using the plugin 'Provider' to get some information and when I'm trying to show a dialog and get a info from my Provider, something weird happened. The code seems like this:

showDialog(
    context: context,
    builder: (context) {
    return LoadingDialog(); //LoadingDialog is one of my own class ,which extends AlertDialog.    
    }
);

but it throws a error like:

ProviderNotFoundException (Error: Could not find the correct Provider<LoginState> above this LoadingDialog Widget

So I set a breakpoint and checked the context in the class LoadingDialog, but it's like:

StatelessElement(LoadingDialog(dirty))

So i think the context from the outside page failed to pass into this dialog. So later I read the Flutter API doc and it says:

This function takes a builder which typically builds a Dialog widget. Content below the dialog is dimmed with a ModalBarrier. The widget returned by the builder does not share a context with the location that showDialog is originally called from. Use a StatefulBuilder or a custom StatefulWidget if the dialog needs to update dynamically.

So i tried to use the StatefulBuilder,the code seems like this:

showDialog(
    context: context,
    builder: (context) {
      bool tempLoginState = Provider.of<LoginState>(context, listen: true).getState;//my own method returns true.
      return AlertDialog(
        content: StatefulBuilder(
          builder: (context, setState){
            //my dialog detail codes  
          }
        )
      )
    }
);

But actually, the first line in the builder:

bool tempLoginState = Provider.of<LoginState>(context, listen: true).getState;

it doesn't work, because the context here is also the same as

StatelessElement(LoadingDialog(dirty))

So how can I pass the context to the dialog on earth? Thank you for your ansering.

JSYRD
  • 1
  • 1
  • I got the same. Did you find a resolution? – dKen Jun 20 '22 at 07:28
  • There are some possible things to try at: https://stackoverflow.com/questions/67433171/flutter-cant-find-bloc-in-the-parent-tree-when-using-showdialog – dKen Jun 20 '22 at 07:37

0 Answers0