我想从导航堆栈中获取特定的命名路线并使用 Navigator.removeRoute(context, Route );删除它。但我怎样才能找到路线呢?
这有效...
Navigator.removeRoute(context, MaterialPageRoute(builder: (context) => ThePage()));
Run Code Online (Sandbox Code Playgroud)
您必须指定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);
},
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
6075 次 |
| 最近记录: |