颤动:按下后退按钮关闭两个屏幕
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
中的那个作为根小部件。所以你有两个选择:
- 仅使用一个
MaterialApp
作为根小部件并调用 Navigator.of(context).push(...)
- 有多个
MaterialApp
并使用Navigator.of(context,rootNavigator: true).push(...)
如果您需要我的建议,请使用 1。
我已从仪表板导航到名为 '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
中的那个作为根小部件。所以你有两个选择:
- 仅使用一个
MaterialApp
作为根小部件并调用Navigator.of(context).push(...)
- 有多个
MaterialApp
并使用Navigator.of(context,rootNavigator: true).push(...)
如果您需要我的建议,请使用 1。