我们的求职申请,有2种情况:
- 已有帐户。
- 以访客身份访问。
当用户以访客身份访问,然后找到喜欢的工作并保存它时,就会出现问题,我们在用户完成登录后将用户重定向到登录。我将用户帐户信息保存在共享首选项中,并将用户导航回上一个作业详细信息屏幕。我们想要的是之前的所有屏幕都已登录,因为以前的某些屏幕我们依靠用户 id 来显示
您可以在登录状态更改时刷新应用:
将这两个微件添加到您的应用程序:
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)
因此,当您更改为登录状态时,您可以调用此方法,并且所有页面也将刷新状态。