我想从导航堆栈中获取特定的命名路线,并使用Navigator.removeRoute(context, route )删除它;但是如何获取路线?
答案 0 :(得分:0)
这有效...
Navigator.removeRoute(context, MaterialPageRoute(builder: (context) => ThePage()));
您必须指定要删除的Route
而不是名称
示例
var page2Route = MaterialPageRoute(builder: (context) => Page2());
var page3Route = MaterialPageRoute(builder: (context) => Page3());
class Page1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 1"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.navigate_next),
onPressed: () {
Navigator.push(
context, page2Route);
},
),
);
}
}
class Page2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 2"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.navigate_next),
onPressed: () {
Navigator.push(
context, page3Route);
},
),
);
}
}
class Page3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 3"),
),
floatingActionButton: FloatingActionButton.extended(
icon: Icon(Icons.delete),
label: Text("Remove Page 2"),
onPressed: () {
Navigator.removeRoute(
context, page2Route);
},
),
);
}
}
输出: