单击警报对话框“是”按钮后,我想关闭页面并返回到堆栈中的主页。我的页面包含textformfields,当我单击textformfield搜索页面的图标时打开。单击搜索列表中的任何项目后,我将返回表单页面。然后单击“后退”按钮,显示警报对话框。并单击是按钮,该错误发生。 如果我不使用警报对话框,则没有错误。 警报将我导航到主页,但搜索列表页面再次打开。我该如何解决这个错误?
我的警报对话框:
Future<bool> _onBackPressed() {
return showDialog(
context: context,
builder: (context) => new AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8.0))),
title: new Text(ml(context, LC.are_you_sure)),
content: new Text(ml(context, LC.are_you_sure_quit_query)),
actions: <Widget>[
new GestureDetector(
onTap: () => Navigator.of(context).pop(false),
child: roundedButton(ml(context, LC.no),
Theme.of(context).primaryColor, Colors.white),
),
new GestureDetector(
onTap: () {
Navigator.of(context).pop(true);
},
child: roundedButton(ml(context, LC.yes),
Theme.of(context).primaryColor, Colors.white),
),
],
),
) ??
false;
}
我使用上面的代码导航到主页。还有其他选择吗?
答案 0 :(得分:1)
我想您正在询问如何删除/清除以前的路线。
您可以通过多种方式进行操作。
1 Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(builder: (context) => MainPage()),
(Route<dynamic> route) => false,
);
2 Navigator.pushReplacementNamed(context, '/route') for named router