Flutter 用户登录后在StoreConnector中颤振redux Navigator.pop()

Flutter 用户登录后在StoreConnector中颤振redux Navigator.pop(),flutter,redux,flutter-redux,Flutter,Redux,Flutter Redux,我如何做Navigator.of(context.pop)((route)=>false) 在我的登录屏幕中 class _LoginState extends State<Login> with SingleTickerProviderStateMixin { String email = ''; String password = ''; final Store<AppState> store; final _formKey = GlobalKey&l

我如何做
Navigator.of(context.pop)((route)=>false)
在我的登录屏幕中

class _LoginState extends State<Login> with SingleTickerProviderStateMixin {
  String email = '';
  String password = '';
  final Store<AppState> store;
  final _formKey = GlobalKey<FormState>();

  _LoginState(this.store);


  @override
  Widget build(BuildContext context) {
    return new StoreConnector<AppState, LoginViewModel>(
      converter: ((Store<AppState> store) => LoginViewModel.create(store)),
      builder: (BuildContext context, LoginViewModel viewModel)  {
        if(viewModel.user.email != '') {
           Navigator.of(context).pop((route) => false);
           return null;
        }
        return (
          viewModel.isLoading ? 
            Center(...)
            :
            Scaffold(...)
class\u LoginState使用SingleTickerProviderStateMixin扩展状态{
字符串email='';
字符串密码=“”;
最终商店;
final _formKey=GlobalKey();
_LoginState(this.store);
@凌驾
小部件构建(构建上下文){
返回新的StoreConnector(
转换器:((存储)=>LoginViewModel.create(存储)),
生成器:(BuildContext上下文,LoginViewModel视图模型){
如果(viewModel.user.email!=''){
Navigator.of(context.pop)((route)=>false);
返回null;
}
返回(
viewModel.isLoading?
中心(…)
:
脚手架(…)
这是可行的,但会显示错误

Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:4167:11)
I/flutter (13435): #1      Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:4182:6)
I/flutter (13435): #2      State.setState (package:flutter/src/widgets/framework.dart:1253:14)
...
Element.markNeedsBuild.(包:flatter/src/widgets/framework.dart:4167:11)
I/flatter(13435):#1 Element.markNeedsBuild(包:flatter/src/widgets/framework.dart:4182:6)
I/flatter(13435):#2 State.setState(包:flatter/src/widgets/framework.dart:1253:14)
...

我写这篇文章是因为我甚至不知道如何在谷歌上表达查询,因为我是用fluutter(我处理react)进行计算机化的。

我认为问题在于,你想在构建屏幕时导航,这是不可能的

添加此方法

changenavigation() async {
    await Future.delayed(Duration(microseconds: 1));
       Navigator.of(context).pop((route) => false);
  }
按以下方式更改if条件

if(viewModel.user.email != '') {
      changenavigation();
       return Container();
    }

理想情况下,您不应该在小部件树中调用Navigator,因此您将得到一个错误

为此,
StoreConnector
具有
onWillChange
方法。在构建小部件之前,该函数将在状态更改时运行。(类似于react类组件中的componentWillUpdate)

class\u LoginState使用SingleTickerProviderStateMixin扩展状态{
字符串email='';
字符串密码=“”;

(最终存储)

添加您的全部错误。很高兴听到这一点。如果是,请接受我的答案。这只是一种黑客行为。不是正确的处理方法。如果您希望将导航逻辑保留在中间件中,您将如何实现这一点?