【问题标题】:Image not shown inside Hero after navigating to ListView in Flutter在 Flutter 中导航到 ListView 后,图像未在 Hero 中显示
【发布时间】:2019-10-12 21:15:50
【问题描述】:

导航到带有 ListView 的屏幕并滚动到列表底部然后导航回来后,原始图像未显示在 Hero 小部件中

(https://imgur.com/a/8A5VE4i)

我已经尝试过以不同的方式修改我的小部件树,但我的印象是问题在于当我们在 ListView 中向下滚动时第一个单元格被删除并且引用应该由 Flutter 处理SDK。

可在此处找到完整的重现代码 -> https://github.com/hadleycode/flutter_hero_bug

【问题讨论】:

  • 我可能不会将此标记为错误或颤动问题,因为您在 hero 小部件(例如 flightShuttleBuilder)中有选项来构建飞行中的小部件。与该建筑商合作可能会给您想要的东西。
  • @AdrianMurray 我曾尝试使用 flightShuttleBuilder(有关更多信息,请参阅此提交 (github.com/hadleycode/flutter_hero_bug/commit/…)),但这不会以任何方式改变错误行为。仍然没有显示任何图像。 flightShuttleBuilder 的文档还说“如果没有提供,则默认情况下会在飞行中显示目标路线的 Hero 孩子”......在我的示例中并非如此。我已经尝试添加一个 placeHolderBuilder 来解决一半的问题,但它现在杀死了原始动画的意图
  • 不过,我不确定这是错误的行为,因为未构建的小部件不在屏幕上,而英雄的重点是将元素从一个屏幕过渡到另一个屏幕,这意味着那些未构建的将按原样放置到叠加层中。您可以尝试添加一个初始动画,以便在推送下一页之前将您想要的元素放在屏幕上。或者您可以将列表中的小部件放在浮动的 sliverpersistentheader 中,然后将其传递到下一页。保持建设。
  • 我认为我发布的 gif 循环可能令人困惑,因为最后它返回到所有图像都在那里的开始......我完全同意小部件时不应该有动画离屏。然而,第一页上的原始图像根本没有显示,根据官方文档,这不是定义的行为。
  • 您的意思是他们甚至在过渡完成之后 都不构建?那肯定是一个错误。我想知道,如果现在,您是否可以在使用 push().then((_){ setState((){}); }) 弹回第一页后尝试执行 setState

标签: flutter flutter-animation


【解决方案1】:

这个bug似乎已经在V1.9.1 hotfix中得到解决

https://github.com/flutter/flutter/commit/68587a0916366e9512a78df22c44163d041dd5f3

【讨论】:

    猜你喜欢
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 2019-12-16
    相关资源
    最近更新 更多