颤振:按返回按钮可关闭两个屏幕

时间:2020-11-03 11:41:44

标签: android ios flutter navigation

我已经从仪表板导航到“ 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”。

请帮助我!

1 个答案:

答案 0 :(得分:0)

因此,如评论中所述。使用Navigator.of(context,rootNavigator: true).push(...)解决了该问题。
但是,为什么您最初会遇到这个问题?因为您的应用中有多个MaterialApp。您只需保留main.dart中的一个作为根小部件。所以您有两个选择:

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

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