如何在颤动中删除特定路线?
Posted
技术标签:
【中文标题】如何在颤动中删除特定路线?【英文标题】:How to remove a particular route in flutter? 【发布时间】:2020-05-05 11:24:47 【问题描述】:我想从导航堆栈中获取特定命名的路由并使用 Navigator.removeRoute(context, route); 将其删除但是我怎样才能获得路线?
【问题讨论】:
欢迎来到堆栈溢出。您能否通过举例说明您想要的更具体一些。 【参考方案1】:这行得通...
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);
,
),
);
输出:
【讨论】:
不工作。收到此错误:断言失败:第 2185 行 pos 12:'route._navigator == this':不正确。如果你做过这样的事情,你能分享一个例子吗? 你是用 MaterialPageRoute 导航的吗? 是的。我用过 MaterialPageRoute【参考方案2】:你可以试试这个方法
Navigator.pushReplacement
Navigator.pushReplacement(context, CupertinoPageRoute(builder: (_) => NewScreen()));
此方法不会删除路由。 但是它在 push 时不会发送它属于堆栈的页面
【讨论】:
以上是关于如何在颤动中删除特定路线?的主要内容,如果未能解决你的问题,请参考以下文章