Android 颤振:按下后退按钮关闭两个屏幕

Android 颤振:按下后退按钮关闭两个屏幕,android,ios,flutter,navigation,Android,Ios,Flutter,Navigation,我从仪表板导航到一个叫做“A”的屏幕。在该屏幕中,我使用ListView Builder显示了一个列表。在这种情况下,单击ListView中的项目导航到另一个名为“B”的屏幕。当我按下屏幕上的后退按钮“B”时,它将导航到仪表板。但它必须导航到屏幕“A”。请帮我解决这个问题 在仪表板中,我使用下面的代码导航到屏幕“A” 在屏幕“A”中,我使用下面的代码导航到屏幕“B” 当我按下屏幕“B”中的“后退”按钮时,它将导航到仪表板。但我需要根据背景导航到“A” 请帮帮我 如评论中所述。使用Navigato

我从仪表板导航到一个叫做“A”的屏幕。在该屏幕中,我使用ListView Builder显示了一个列表。在这种情况下,单击ListView中的项目导航到另一个名为“B”的屏幕。当我按下屏幕上的后退按钮“B”时,它将导航到仪表板。但它必须导航到屏幕“A”。请帮我解决这个问题

在仪表板中,我使用下面的代码导航到屏幕“A”

在屏幕“A”中,我使用下面的代码导航到屏幕“B”

当我按下屏幕“B”中的“后退”按钮时,它将导航到仪表板。但我需要根据背景导航到“A”


请帮帮我

如评论中所述。使用
Navigator.of(上下文,rootNavigator:true)。推送(…)
修复了该问题。
但你为什么一开始就要面对这个问题?因为您的应用程序中有多个
MaterialApp
。您只需将
main.dart
中的一个作为根小部件保留。所以你有两个选择:

  • 只使用一个
    MaterialApp
    作为根小部件,并调用
    Navigator.of(context).push(…)
  • 拥有多个
    MaterialApp
    并使用
    Navigator.of(上下文,rootNavigator:true)。推送(…)

  • 如果您需要我的建议,请使用1。

    似乎一切正常,您是否尝试停止应用程序并重新启动它(不是热重新加载)?你是在代码中的某个地方调用
    .pop()
    吗?不是。我只在应用程序栏操作中添加“``.pop()``````。当我按下安卓系统后退按钮或IOS向后滑动时,就会发生这种情况。我重新启动并创建了一个发布apk。但是不工作你能发布仪表板、租赁和提交争议的所有源代码吗?@ikerfah我用源代码编辑了这篇文章。请仔细研究一下,当您使用Navigator时,是否可以使用
    rootNavigator:true
    作为第二个参数
    Navigator.of(上下文,rootNavigator:true)。推送(…)
      _showSnackBar(BuildContext context, Item item) {
        switch(item.name)
        {
          
          case "Disputes":
            Navigator.push(context, MaterialPageRoute(builder: (context)=> Disputes()));
            break;
            
        }
      }
    }
    
     Card(
                                                    child: ListTile(
                                                      onTap: () {
                                                        Navigator.push(
                                                            context,
                                                            MaterialPageRoute(
                                                                builder: (context) =>
                                                                    SubmitDisputes(disputesId: disputeResList[index].id.toString())));
                                                      },
                                                      trailing: Icon(
                                                          Icons.remove_red_eye),
                                                   
                                                  ));
                                            }),
                                      ),
                                    ),