Flutter共享元素动画,你会吗?

本文介绍Flutter中的Hero动画组件,演示了如何使用Hero组件实现在页面转场时共享视图元素的动画效果。通过简单的示例代码,展示了设置共享元素及tag属性的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录传送门:《Flutter快速上手指南》先导篇

Hero 是 Flutter 提供的页面转场动画的一种。

在进行页面转场时,它能够共享页面间视图元素。

通过 Hero,可以很容易的实现图中的动画效果。

接下来看看如何实现的吧。

1.跳转位置添加 Hero,包裹需要共享的 Widget

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
        onTap: () {
          showPhoto(context);
        },
        child: Hero(
            key: Key(photo.assetName),
            // tag 是关键
            tag: photo.tag,
            child: Image.asset(
              photo.assetName,
              package: photo.assetPackage,
              fit: BoxFit.cover,
            )));
  }
复制代码

2.目标页的共享元素也使用 Hero 包裹

Scaffold(
  appBar: AppBar(title: Text('Hero PageB')),
  body: SizedBox.expand(
    child: Hero(
      // tag 是关键
      tag: photo.tag,
      child: ClipRect(
        child: Image.asset(
          photo.assetName,
          package: photo.assetPackage,
          fit: BoxFit.cover,
        ),
      ),
    ),
  ),
);
复制代码

实现方式很简单,就是使用 Hero 包裹两个页面间的共享元素。

其中关键就是共享元素的 tag 必须相同。

剩余的处理 Flutter 已经帮开发者完成了。

快自己动手试试吧。

目录传送门:《Flutter快速上手指南》先导篇

如何找到我?

传送门:CoorChice 的主页

传送门:CoorChice 的 Github


转载于:https://juejin.im/post/5ca828c8e51d456ce543eec2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值