Reputation: 312
I am adding some data into the SharedPreferences
on page2 of my app and I am trying to retrieve the data on the homepage. I have used an init function on page 1 as follows:
@override
void initState() {
super.initState();
_getrecent();
}
void _getrecent() async {
final prefs = await SharedPreferences.getInstance();
// prefs.clear();
String b = prefs.getString("recent").toString();
Map<String, dynamic> p = json.decode(b);
if (b.isNotEmpty) {
print("Shared pref:" + b);
setState(() {
c = Drug.fromJson(p);
});
cond = true;
} else {
print("none in shared prefs");
cond = false;
}
}
Since the initState()
loads only once, I was wondering if there was a way to load it every time page1 is rendered. Or perhaps there is a better way to do this. I am new to flutter so I don't have a lot of idea in State Management.
Upvotes: 3
Views: 9456
Reputation: 1186
you can override didChangeDependencies
method. Called when a dependency of the [State] object changes as you use the setState
,
@override
void didChangeDependencies() {
// your codes
}
Also, you should know that using setState
updates the whole widget, which has an overhead. To avoid that you should const
, declaring a widget const will only render once so it's efficient.
Upvotes: 1
Reputation: 7963
First thing is you can't force
initState
to rebuild your widget. For that you havesetState
to rebuild your widget. As far as I can understand you want to recallinitState
just to call_getrecent()
again.
Here's what you should ideally do :
A simple solution would be to use FutureBuilder. You just need to use _getrecent()
in FutureBuilder
as parent where you want to use the data you get from _getrecent()
. This way everytime your Widget
rebuilds it will call _getrecent()
.
Upvotes: 2
Reputation: 1466
init function
will render it only once initially, to avoid that -
You can use setState( )
method to re-render your whole widget.
Upvotes: 0
Reputation: 601
You simply use setState()
methode if you want to update widget. Here's documentation for this https://api.flutter.dev/flutter/widgets/State/setState.html
Upvotes: 0