Flutter 如何从导航器堆栈的最后一页将setState发送到根页?

Flutter 如何从导航器堆栈的最后一页将setState发送到根页?,flutter,Flutter,我设计了我的应用程序,并决定使用路由和firebase进行身份验证 在根页面中有一些按钮,如果用户想用电子邮件登录,请转到EmailLoginpage 在EmailLogin页面中,如果用户在进入EmailRegister页面并注册之前未注册 我使用3次Navigator.pop(),从堆栈中弹出:EmailRegister,EmailLogin和LoginPage 然后按下LoggedIn,但当我按下后退按钮时,我看到黑屏 import 'package:flutter/material.d

我设计了我的应用程序,并决定使用路由和firebase进行身份验证

在根页面中有一些按钮,如果用户想用电子邮件登录,请转到
EmailLogin
page

EmailLogin
页面中,如果用户在进入
EmailRegister
页面并注册之前未注册

我使用3次
Navigator.pop()
,从堆栈中弹出:
EmailRegister
EmailLogin
LoginPage
然后按下
LoggedIn
,但当我按下后退按钮时,我看到黑屏


import 'package:flutter/material.dart';
import 'loginPage.dart';
import 'login-register/emailLogin.dart';
import 'login-register/emailRegister.dart';
import 'login-register/authentication.dart';
import 'logged-in/logged-in.dart';


BaseAuth auth = new Auth();

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      //home: LoginPage(),
      initialRoute: '/',
      routes: {
        // When navigating to the "/" route, build the FirstScreen widget.
        '/': (context) => LoginPage(),
        '/loggedIn' : (context) => LoggedIn(auth: auth),
        '/emailLogin': (context) => EmailLogin(),
        '/emailRegister': (context) => EmailRegister(auth: auth),
        //'/emailRegister': (context) => EmailRegister(),

      },
    );
  }
}

我改变了主意,决定为根路由设计
HomePage
,如果用户登录用户请参阅
LoggedIn
页面,否则请参阅
loginPage
,但我需要将setstate发送到
HomePage
小部件,但如何发送?因为页面堆栈如下所示:root->login->register


我给每一页发回电话,或者我需要做什么

我认为您以前安排页面路径的方式是正确的。你可以用

  • Navigator.of(context).popintil()
    ,返回到根目录
  • Navigator.of(context.pushandremovedun直到()
    ),推回家并移除直到根

  • 虽然这可能会对您的导航查询进行排序,但我仍然不明白您为什么要在主页中设置state()。注册后,如果用户登录返回loggedinpage,我需要回家并进入设置状态,如果用户登录返回loggedinpage,则需要解释或一些代码。我可以建议实施状态管理吗?您可以使用大量的方法,如BLoC、Reudx,如下所述