Я использую технику из этого SO ответа , чтобы "перезапустить" мое приложение.Проблема в том, что «домашняя» страница моего MaterialApp
не воссоздается (при перезапуске initState
не выполняется).
Чтобы это произошло, я должен ненадолго вернуть что-то еще, кромеMaterialApp
из метода build
в состоянии моего приложения.
class _RestartWidgetState extends State<RestartWidget> {
Key key = new UniqueKey();
static bool isRestarting = false;
void restartApp() {
this.setState(() {
isRestarting = true;
key = new UniqueKey();
});
Timer(Duration(milliseconds: 500), (){
this.setState(() {
isRestarting = false;
key = new UniqueKey();
});
});
}
@override
Widget build(BuildContext context) {
return new Container(
key: key,
child: widget.child,
);
}
}
class MyAppState extends State<MyApp>{
@override
Widget build(BuildContext context) {
if( _RestartWidgetState.isRestarting ) {
return Container( ... );
}
else{
return ScopedModel<MyModel>(
model: myModel,
child: MaterialApp(
home: MainScreen(),
...
)
);
}
}
}
Есть ли другой / лучший способ сделать это?Это выглядит отрывочно.