【问题标题】:How to remove pages from stack using Navigator.pages in Flutter如何在 Flutter 中使用 Navigator.pages 从堆栈中删除页面
【发布时间】:2020-09-02 09:28:51
【问题描述】:

我正在尝试了解 Navigator 2.0 Pages API,它允许通过 Navigator.pages 属性修改导航堆栈。

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

Here is the DartPad demo

但是,当简单地从 Navigator.pages 中删除 CustomPage 时,会出现动画故障。一瞬间,您可以看到当前页面下方的页面正在动画。

这是 Flutter 框架中的一个 bug,还是有更好的方法从 backstack 中删除页面?

【问题讨论】:

    标签: flutter navigation


    【解决方案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,
          ),
        );
      }
    

    【讨论】:

    • 谢谢,这确实解决了问题!非常感谢
    • 这不是一个解决方法,甚至不是一个好主意。您将失去所有路线的整个子树状态。
    • 是的,状态会丢失,每个页面的key都会不同
    猜你喜欢
    • 2013-10-11
    • 1970-01-01
    • 2021-01-14
    • 1970-01-01
    • 2019-09-12
    • 2019-08-29
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多