Hero 是 Flutter 提供的頁面轉場動畫的一種。github
在進行頁面轉場時,它可以共享頁面間視圖元素。bash
經過 Hero,能夠很容易的實現圖中的動畫效果。app
接下來看看如何實現的吧。ide
1.跳轉位置添加 Hero,包裹須要共享的 Widgetpost
@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 包裹兩個頁面間的共享元素。ui
其中關鍵就是共享元素的 tag
必須相同。spa
剩餘的處理 Flutter 已經幫開發者完成了。3d
快本身動手試試吧。