我们的求职申请有2种情况:
当用户以访客身份访问,然后找到喜欢的作业并将其保存时,会发生问题。在用户完成登录后,我们已将用户重定向为登录。我将用户帐户信息保存在SharedPreferences中,并浏览了用户返回上一个工作详细信息屏幕。我们想要的是所有先前的屏幕都已登录,因为我们依赖于用户ID来显示某些先前的屏幕
答案 0 :(得分:0)
您可以在登录状态更改时刷新应用程序:
将这两个小部件添加到您的应用中:
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)
因此,当您更改为登录状态时,您可以调用此方法,并且您的所有页面也会刷新状态。