Since flutter calls the build method many times in different condition, to avoid getting the data many times, I initialize the data in initState
.
I want
Edit: Better answer below.
Apparently, you cannot access getData(context)
during initState
(more concrete: before it completed).
The reason, so I believe, is that getData
tries to look up an InheritedWidget
ancestor up in the tree, but the tree is just now being built (your widget is created during the parent widget's build
).
The obvious solution would be to delay getData
's lookup to a later point in time. There are several ways to achieve that:
scheduleMicrotask
should work fine.Look it up during the first build
call. You could have an isInitialized
field set to false
and in you build
, something like:
if (!isInitialized) {
isInitialized = true;
// TODO: do the getData(...) stuff
}