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(
// ...
),
)