Force MaterialApp "дом", чтобы восстановить - PullRequest
0 голосов
/ 25 сентября 2019

Я использую технику из этого 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(),

          ...

        )
      );
    }
  }
}

Есть ли другой / лучший способ сделать это?Это выглядит отрывочно.

...