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

Flutter : Pressing back button closes two screens

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

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

  _showSnackBar(BuildContext context, Item item) {
    switch(item.name)
    {
      
      case "Disputes":
        Navigator.push(context, MaterialPageRoute(builder: (context)=> Disputes()));
        break;
        
    }
  }
}

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

 Card(
                                                child: ListTile(
                                                  onTap: () {
                                                    Navigator.push(
                                                        context,
                                                        MaterialPageRoute(
                                                            builder: (context) =>
                                                                SubmitDisputes(disputesId: disputeResList[index].id.toString())));
                                                  },
                                                  trailing: Icon(
                                                      Icons.remove_red_eye),
                                               
                                              ));
                                        }),
                                  ),
                                ),

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

请帮帮我!

正如评论中所讨论的那样。使用 Navigator.of(context,rootNavigator: true).push(...) 解决了问题。
但是你为什么一开始会遇到这个问题?因为您的应用中有多个 MaterialApp。您必须只保留 main.dart 中的那个作为根小部件。所以你有两个选择:

  1. 仅使用一个 MaterialApp 作为根小部件并调用 Navigator.of(context).push(...)
  2. 有多个MaterialApp并使用Navigator.of(context,rootNavigator: true).push(...)

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