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