问题描述
这是应用程序中的登录页面,登录后,我的应用程序在底部选项卡下还包含2个屏幕,但是当我尝试注销并导航回登录屏幕时,它会导航,但底部选项卡栏仍保留在底部不在登录页面中。
FlatButton.icon(
onpressed: () => {
_auth.signOutGoogle(),Navigator.push(
context,MaterialPageRoute(
builder: (context) => SignIn()))
},icon: Icon(Icons.exit_to_app),label: Text('Sign Out'))
这是我的注销按钮,下面是我的main.dart文件,其中定义了所有路由。
void main() {
SystemChrome.setEnabledsystemUIOverlays([]);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
StreamProvider.value(value: AuthService().user),],child: Consumer<User>(
builder: (ctx,auth,_) => MaterialApp(
title: 'Flutter Demo',theme: ThemeData(
visualDensity: VisualDensity.adaptivePlatformDensity,),home: Wrapper(),routes: {
'/homescreen': (ctx) => HomeScreen(),'/signin': (ctx) => SignIn(),'/dashboard': (ctx) => DashBoard(),'/status': (ctx) => Status()
},)),);
}
}
谢谢。
解决方法
FlatButton.icon(
onPressed: () => {
_auth.signOutGoogle(),Navigator.pushAndRemoveUntil(
context,MaterialPageRoute(builder: (context) => SignIn()),(Route<dynamic> route) => false,);
},icon: Icon(Icons.exit_to_app),label: Text('Sign Out'))
如果上述解决方案无效,请检查第二个解决方案
FlatButton.icon(
onPressed: () => {
_auth.signOutGoogle(),Navigator.of(context,rootNavigator: true).pushReplacement(
MaterialPageRoute(builder: (context) => SignIn()));
},label: Text('Sign Out'))