Я немного знаком с флаттером и начинаю работать с SharedPreference.Все работает как шарм, но когда я изменяю дочерний маршрут, родительский маршрут не обновляется.
Я использую параметр маршрута MaterialApp:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter app',
home: Counter(),
routes: <String, WidgetBuilder>{
'/settings': (BuildContext context) => new Settings(),
});
}
}
У меня есть родительский маршрут с initStateкоторая работает при запуске приложения, но когда я открываю новую страницу, а затем вносю изменения в SharedPreference, и после того, как я возвращаюсь к основному маршруту, SharedPreference не изменяется, потому что initState не запускается, когда вы извлекаете маршрут из стека.
void initState() {
SharedPreference().getLightsOn().then(updateLight);
super.initState();
}
void updateLight(bool lt) {
setState(() {
_lights = lt;
});
}
Мой обходной путь - поместить его в виджет сборки, чтобы получить значение, но я думаю, что это не очень хороший метод, потому что он повторяется снова и снова.
Widget build( BuildContext context ) {
SharedPreference().getLightsOn().then(updateLight);
...