Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓后退按钮在按下时不停地将我带回第一个屏幕';如果抽屉打开了,就不要关上_Android_Ios_Flutter_Navigation Drawer_Back - Fatal编程技术网

Android 安卓后退按钮在按下时不停地将我带回第一个屏幕';如果抽屉打开了,就不要关上

Android 安卓后退按钮在按下时不停地将我带回第一个屏幕';如果抽屉打开了,就不要关上,android,ios,flutter,navigation-drawer,back,Android,Ios,Flutter,Navigation Drawer,Back,我创建了多个屏幕作为独立的dart文件,并在主屏幕中创建了一个抽屉。当我选择任何屏幕时,它会将我导航到它,但问题是: 如果我按下硬件后退按钮,它会将我带回应用程序的第一个屏幕,即启动屏幕 如果我按下应用程序栏上的后退按钮,它会将我带回上一个屏幕,但抽屉显示为打开状态 如果抽屉打开,我按下硬件返回按钮,它没有关闭它,它也会把我带回第一个屏幕(启动屏幕)。。。喜欢我的第一点。 示例:我的主页导航器代码: onPressed: (){ Navigator.push(context, Mater

我创建了多个屏幕作为独立的dart文件,并在主屏幕中创建了一个抽屉。当我选择任何屏幕时,它会将我导航到它,但问题是:

  • 如果我按下硬件后退按钮,它会将我带回应用程序的第一个屏幕,即启动屏幕

  • 如果我按下应用程序栏上的后退按钮,它会将我带回上一个屏幕,但抽屉显示为打开状态

  • 如果抽屉打开,我按下硬件返回按钮,它没有关闭它,它也会把我带回第一个屏幕(启动屏幕)。。。喜欢我的第一点。
    示例:我的主页导航器代码:

    onPressed: (){ Navigator.push(context,
        MaterialPageRoute(builder: (context) => Profile(),
        )
    

  • 我读过关于Willposcope的书并使用过它,但情况仍然是这样。

    我解决了这个问题,在它推到新屏幕之前在启动屏幕中添加了以下代码

    Navigator.popUntil(context, ModalRoute.withName('/scrren'));
    
    

    我通过使用
    Navigator.popandpushname()
    方法解决了这个问题

    void main() {
      runApp(MaterialApp(routes: {
        '/': (context) => SplashScreen(),
        '/home': (context) => HomePage(),
        '/signin': (context) => Confirm(),
      }));
    }
    
    在检查用户是否已经登录的函数中,根据布尔响应,我们可以在屏幕上推送新页面。这样,如果用户按下硬件后退按钮,则不会显示SplashScreen(),应用程序将直接关闭

    Navigator.popAndPushNamed(context, '/home');
    
    Navigator.popAndPushNamed(context, '/signin');
    
    用户成功登录后,我们可以推送相同的Home()页面


    对我的三个问题有什么想法吗
    void _signIn(){
    if (_success){
    Navigator.popAndPushNamed(context, '/home');
    }
    }
    
    @override
      Widget build(BuildContext context) {
        return MaterialApp(
          routes: {
            '/home': (context) => HomePage(),
          });