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