从列表中删除元素后的英雄动画 - 如何阻止它尝试对空白框进行动画处理?



基本设置:

  1. 我有一个列表视图构建器,它基于列表生成列表。
  2. 列表的每个元素都用 Hero(( 小部件包装,并具有唯一的标签。
  3. 列表呈现得很好,GestureDetector 在点击时启动一个"详细信息"页面,将相同的小部件包装在具有相同标签的 Hero(( 小部件中,并且动画效果很好,就像 Navigator.pop(( 上的"返回"动画一样;

问题是...

我允许用户删除详细信息页面上的列表元素,如果他们这样做,当我使用 .pop(( 关闭页面时,Hero 动画基本上会在新渲染(和较短的列表(的顶部动画化原始大小的空白框,使其看起来像列表中有"空白"。

我最初认为这是列表状态和列表未更新的问题,但大量检查证明列表正在更新,并且小部件正在完全按照应有的方式重新渲染,只是由于删除引起的 Hero 动画,它们上面有一个空白框。

  • 删除 Hero(( 小部件包装器,它工作正常。
  • 断开"标签",使其在两个页面之间不再匹配,这很好(但在导航到详细信息页面时显然不会动画(。

显然,我可以停止删除并移动到主页以完全避免动画或删除动画,但是有没有"正确"的方法呢?

还有人打同样吗?

你到达那里是多么有趣的案例。您的详细信息页面是否为状态?我想你可以做的一件事是在删除后设置状态,所以在重建中,删除的英雄小部件将不再存在,并且在弹出导航时,英雄导航不会被触发,因为它不再存在。

如果用户在弹出页面上单击"删除",而不是从弹出页面上的列表中删除项目,您将标志/参数发送回父页面以删除记录,该怎么办?这样,当弹出窗口关闭时,动画将正常播放,然后您可以对已删除的记录进行动画处理。