flutter - 如何为两个小部件制作英雄动画
问题描述
我需要在两个不同的小部件中制作像英雄这样的动画。那可能吗?
带有图像 a 的小部件 a 和带有图像 a 的小部件 b 但小部件 a 在列表视图内,小部件 b 是全屏图像(它隐藏列表视图)
解决方案
这很简单。您只需使用相同的 TAG 属性值将两个小部件包装在 Hero 小部件中。下面的代码片段假设您在 aImage
中,ListTile
并且在用户单击后您会显示一个具有相同图像的新页面,但该图像将由Hero
小部件进行动画处理。
在列表页面中,列表项可以是
ListTile(
leading: Hero(
tag: IMAGE_TAG, // must be the same in different pages
child: Image(image: AssetImage('you_asset_dir/yourImage.png')),
),
title: Text('Anything'),
onTap: () => // Just go to full screen page
);
在全屏页面
Scaffold(
body: Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Hero(
tag: 'IMAGE_TAG', // must be the SAME VALUE DEFINED IN list tile hero child widget.
child: Image(image: AssetImage('you_asset_dir/yourImage.png')),
),
),
);
OBS:Hero
标签属性在不同的上下文中必须相同,但是如果您有一个包含许多使用Hero
小部件的项目的列表,则每个Hero
int 相同的上下文/页面必须具有不同的tag
值。
要深入了解英雄动画的概念,请查看官方文档
推荐阅读
- android - 使用滑动手势检测导航栏中的事件
- java - 如何在静态方法结束时返回变量
- java - Spring Webclient 收到 404 错误,没有消息
- c# - 如何使用半边数据结构获得一系列顶点/边?
- c - 为什么 printf 被调用两次?甚至看起来是随机的?
- android - DiffUtil 重绘 ListAdapter Kotlin 中的所有项目
- google-cloud-platform - 有什么方法可以使用一些谷歌云 java 客户端获取“令牌”?
- python - Python .exe 文件在双击时不会运行,但在通过 cmd 运行时可以运行
- sql - 如何将带有逗号的sql列格式化为数字格式
- python - 运行两个电机的树莓派