需要有关如何路由到新页面然后返回原始呼叫者的帮助。
在我的应用中,主页是项目列表。当用户选择一个项目时,他们会看到带有更多信息按钮的详细信息...在某些项目上,用户需要登录才能查看更多数据。
因此,在上述情况下,我具有进入登录页面的路径,在他们登录后,我需要重定向回到相同的记录详细信息页面。
我该怎么办?
如果选择更多信息,这是我用来将其定向到登录屏幕的代码
Navigator.of(context, rootNavigator: true)
.push(CupertinoPageRoute<void>(
title: "login",
builder: (BuildContext context) => LoginScreen(),
),
);
----更新-
这是我对登录屏幕的调用,但是“ isLoginSuccess”的值返回始终为空
_navigateToLogin(applyType) async {
Future<bool> isLoginSuccess = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
),
);
isLoginSuccess.then((onValue) {
if (onValue) {
_navigateToResumeScreen(applyType);
}
});
}
用户登录..后,这是弹出命令,可返回初始屏幕
Navigator.of(context).pop(true);
的值
感谢您的帮助
答案 0 :(得分:0)
您可以通过多种方式进行操作,这取决于您的登录流程的工作方式, 这是最简单的方法,
class LoginScreen extends StatefulWidget {
@override
_LoginScreenState createState() => _LoginScreenState();
}
class _LoginScreenState extends State<LoginScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Text('Login'),
onPressed: login,
),
],
)
),
);
}
void login() {
// simulate the login
Future.delayed(Duration(seconds: 2)).then((_){
setState(() {
// update the UI ,
});
// navigate to previous route
Navigator.of(context).pop('pass some result back to previus screen');
// while you pushed to this screen you can a wait the result
// coming from this screen
// for more info see the navigation in flutter in general
});
}
}