导航到另一个屏幕时,为什么仍显示“底部标签”?

问题描述

enter image description here

这是应用程序中的登录页面登录后,我的应用程序在底部选项卡下还包含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'))