颤振:登录后重定向到原始点

时间:2019-06-29 23:01:07

标签: flutter dart

需要有关如何路由到新页面然后返回原始呼叫者的帮助。

在我的应用中,主页是项目列表。当用户选择一个项目时,他们会看到带有更多信息按钮的详细信息...在某些项目上,用户需要登录才能查看更多数据。

因此,在上述情况下,我具有进入登录页面的路径,在他们登录后,我需要重定向回到相同的记录详细信息页面。

我该怎么办?

如果选择更多信息,这是我用来将其定向到登录屏幕的代码

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);

的值

感谢您的帮助

1 个答案:

答案 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 

        });
      }
    }