Вы можете обновить свое приложение при изменении статуса входа в систему:
Добавьте эти два виджета в свое приложение:
class RestartWidget extends StatefulWidget {
final Widget child;
RestartWidget({this.child});
static restartApp(BuildContext context) {
final _RestartWidgetState state =
context.ancestorStateOfType(const TypeMatcher<_RestartWidgetState>());
state.restartApp();
}
@override
_RestartWidgetState createState() => new _RestartWidgetState();
}
class _RestartWidgetState extends State<RestartWidget> {
Key key = new UniqueKey();
void restartApp() {
this.setState(() {
key = new UniqueKey();
});
}
@override
Widget build(BuildContext context) {
return new Container(
key: key,
child: widget.child,
);
}
}
class AppBuilder extends StatefulWidget {
final Function(BuildContext) builder;
const AppBuilder({Key key, this.builder}) : super(key: key);
@override
AppBuilderState createState() => new AppBuilderState();
static AppBuilderState of(BuildContext context) {
return context.ancestorStateOfType(const TypeMatcher<AppBuilderState>());
}
}
class AppBuilderState extends State<AppBuilder> {
@override
Widget build(BuildContext context) {
return widget.builder(context);
}
void rebuild() {
setState(() {});
}
}
Затем добавьте AppBuilder в качестве родительского для Material App:
AppBuilder(
builder: (context) {
return MaterialApp(
);
},
);
Каждый раз, когда вы хотите обновить состояние вашего приложения, просто позвоните:
RestartWidget.restartApp(context)
Таким образом, вы можете вызывать этот метод, когда вы переходите в состояние входа в систему, и вся ваша страница также будет обновлять состояние.