【问题标题】:How to make hero widget fly below other widget in route transition如何使英雄小部件在路线转换中飞到其他小部件下方
【发布时间】:2020-12-28 16:23:47
【问题描述】:

如何让英雄小部件在路线转换中飞到appBarbottomBar 小部件下方。 我也曾尝试用 hero 扭曲其他小部件,但没有运气。

【问题讨论】:

    标签: flutter flutter-animation


    【解决方案1】:

    在过渡期间,Flutter 按照在小部件(元素)树中的顺序放置 Hero;最后一个在上面。因此,您可能能够以这样一种方式组织您的屏幕,即在树中找到应用栏和底部栏英雄的时间要晚于包含其他英雄的主体。例如Stack:

    Stack(
      children: [
        Body(),
        Positioned(
          top: 0,
          left: 0,
          right: 0,
          child: AppBar(),
        ),
        Positioned(
          bottom: 0,
          left: 0,
          right: 0,
          child: BottomBar(),
        ),
      ],
    )
    

    这依赖于 Flutter 的 heros 的实现细节,所以比较hacky。

    另一种方法是复制 Flutter 的 HeroController、Hero 和相关代码并对其进行修改,以通过 Hero 小部件的新“z-index”属性对 Hero OverlayEntries 进行排序。

    导航器叠加层中的英雄“飞”。因此,另一种方法可能是将您的应用栏和底部栏放在导航器的顶部(例如使用上面的堆栈)。

    当然,这些都不是很好。

    【讨论】:

    • 感谢您的回答,我尝试了堆栈,但它并没有解决我猜想的问题,因为 AppBarBottomBar 处于相同的位置。我会尝试其他方法,但这需要时间:(
    猜你喜欢
    • 2021-09-03
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2017-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多