InheritedWidget with Scaffold as child doesn’t seem to be working

MyInherited.of(context) will basically look into the parent of the current context to see if there’s a MyInherited instantiated.

The problem is : Your inherited widget is instantiated within the current context.

=> No MyInherited as parent

=> crash

The trick is to use a different context.
There are many solutions there. You could instantiate MyInherited in another widget, so that the context of your build method will have a MyInherited as parent.

Or you could potentially use a Builder to introduce a fake widget that will pass you it’s context.

Example of builder :

return new MyInheritedWidget(
  child: new Builder(
    builder: (context) => new Scaffold(),
  ),
);

Another problem, for the same reasons, is that if you insert an inheritedWidget inside a route, it will not be available outside of this route.

The solution is simple here !
Put your MyInheritedWidget above MaterialApp.

above material :

new MyInherited(
  child: new MaterialApp(
    // ...
  ),
)

Leave a Comment