颤动 – 状态改变后如何路由到不同的屏幕?

颤动 – 状态改变后如何路由到不同的屏幕?,第1张

概述我正在使用flutter_redux和google_sign_in,我想在登录后从登录页面路由到另一个页面. 我正在使用调度LoggedInSuccessfully *** 作的中间件处理对Google的API调用.我知道我可以使用Navigator.pushNamed(context,“/ routeName”)进行实际路由,但我不熟悉Flutter和Redux,我的问题是我只是不知道在哪里调用它. 下 我正在使用Flutter_redux和Google_sign_in,我想在登录后从登录页面路由到另一个页面.

我正在使用调度LoggedInSuccessfully *** 作的中间件处理对Google的API调用.我知道我可以使用Navigator.pushnamed(context,“/ routename”)进行实际路由,但我不熟悉Flutter和Redux,我的问题是我只是不知道在哪里调用它.

下面的代码适用于GoogleAuthbuttonContainer,我猜测路由应该在哪里. GoogleAuthbutton只是一个包含实际按钮和布局的普通小部件.

任何帮助表示感谢,谢谢!

@overrIDe  Widget build(BuildContext context) {    return new StoreConnector<AppState,_viewmodel>(      converter: _viewmodel.fromStore,builder: (BuildContext context,_viewmodel vm) {        return new GoogleAuthbutton(          buttonText: vm.buttonText,onpressedCallback: vm.onpressedCallback,);      },);  }}class _viewmodel {  final String buttonText;  final Function onpressedCallback;  _viewmodel({this.onpressedCallback,this.buttonText});  static _viewmodel fromStore(Store<AppState> store) {    return new _viewmodel(        buttonText:        store.state.currentUser != null ? 'Log Out' : 'Log in with Google',onpressedCallback: () {          if (store.state.currentUser != null) {            store.dispatch(new logout());          } else {            store.dispatch(new LogIn());          }        });  }}
解决方法 您可以通过3种不同的方式实现此目的:

>直接调用导航器(不使用viewmodel),但这不是一个干净的解决方案.
>设置navigatorKey并在中间件中使用它,如here所述
>另一个解决方案是我在here中解释的,它将Navigator传递给Action类并在中间件中使用它

总而言之,您可能希望使用中间件来进行导航.

总结

以上是内存溢出为你收集整理的颤动 – 状态改变后如何路由到不同的屏幕?全部内容,希望文章能够帮你解决颤动 – 状态改变后如何路由到不同的屏幕?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存