如何在Flutter中使用Navigator.pages从堆栈中删除页面

时间:2020-09-02 09:28:51

标签: flutter navigation

我试图了解Navigator 2.0 Pages API,该API允许通过Navigator.pages属性来修改导航堆栈。

我准备了一个简单的演示,其中尝试通过更新提供的页面列表从后堆栈中删除页面。

Here is the DartPad demo

screen recording of the issue

但是,当仅从Navigator.pages中删除CustomPage时,就会出现动画故障。一秒钟,您可以看到该页面在当前页面下方处于动画状态。

这是Flutter框架中的错误,还是有更好的方法从后堆栈中删除页面?

1 个答案:

答案 0 :(得分:1)

ValueKey小部件中添加Navigator似乎可以解决问题:

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Navigator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Navigator(
        key: ValueKey(pages.length), // <------------- 
        pages: List.unmodifiable(pages),
        onPopPage: _onPopPage,
      ),
    );
  }