interactiveviewer_gallery
[图片上传失败...(image-75ae6b-1622445894310)]
图片预览&视频预览&图片视频混合预览的容器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和讨论