interactiveviewer_gallery
圖片預覽&視訊預覽&圖片視訊混合預覽的容器UI
- 支援雙指縮放
- 支援雙擊放大
- 支援左右切換圖片
- 支援下拉手勢返回, 伴隨縮小、移動、透明度變化
- 支援視訊失去焦點自動暫停
預覽
安裝
因為該庫是在InteractiveViewer基礎上實現的, 所以flutter版本不低於1.20.0
interactiveviewer_gallery: ${last_version}
複製程式碼
如何使用
- 九宮格圖片頁面中圖片元件包裹Hero(用來跳轉的承接動畫)
Hero(
tag: source.url,
child: ${gridview item}
)
複製程式碼
- 點選九宮格圖片跳轉到圖片預覽頁面
Navigator.of(context).push(
HeroDialogRoute<void>(
builder: (BuildContext context) => InteractiveviewerGallery<DemoSourceEntity>(
sources: sourceList,
initIndex: sourceList.indexOf(source),
// 定義自己的item
itemBuilder: itemBuilder,
onPageChanged: (int pageIndex) {
print("nell-pageIndex:$pageIndex");
},
),
),
);
複製程式碼
- 定義自己的item (因為每個人的UI設計不一樣, 所以這裡需要自己實現item, 該庫只是一個UI容器), 可以參考預覽視訊中的實現: example/lib/main.dart
Widget itemBuilder(BuildContext context, int index, bool isFocus) {
DemoSourceEntity sourceEntity = sourceList[index];
if (sourceEntity.type == 'video') {
return DemoVideoItem(
sourceEntity,
isFocus: isFocus,
);
} else {
return DemoImageItem(sourceEntity);
}
}
複製程式碼
其他
歡迎pr和討論