如何删除颤动中的特定路线?

Bho*_*ati 5 navigator flutter

我想从导航堆栈中获取特定的命名路线并使用 Navigator.removeRoute(context, Route );删除它。但我怎样才能找到路线呢?

Jos*_*eve 3

这有效...

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)

输出:

在此输入图像描述

  • 不工作。收到此错误:断言失败:第 2185 行 pos 12:'route._navigator == this':不是 true。如果你做过这样的事情,你能分享一个例子吗? (6认同)