From a3daed42a17a28f4b47c500ee56ab8af53428004 Mon Sep 17 00:00:00 2001 From: niuhuan Date: Wed, 17 Nov 2021 15:42:36 +0800 Subject: [PATCH] gallery mode save images --- lib/screens/components/ImageReader.dart | 40 ++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/screens/components/ImageReader.dart b/lib/screens/components/ImageReader.dart index 5105f7e..c53b868 100644 --- a/lib/screens/components/ImageReader.dart +++ b/lib/screens/components/ImageReader.dart @@ -651,7 +651,7 @@ class _GalleryReaderState extends State<_GalleryReader> { } Widget _buildViewer() { - return PhotoViewGallery.builder( + var gallery = PhotoViewGallery.builder( scrollDirection: widget.struct.pagerDirection == ReaderDirection.TOP_TO_BOTTOM ? Axis.vertical @@ -724,6 +724,44 @@ class _GalleryReaderState extends State<_GalleryReader> { ); }, ); + return GestureDetector( + child: gallery, + onLongPress: () async { + var index = _current - 1; + if (index >= 0 && _current < widget.struct.images.length) { + Future Function() load = () async { + var item = widget.struct.images[index]; + if (item.downloadLocalPath != null) { + return method.downloadImagePath(item.downloadLocalPath!); + } + var data = await method.remoteImageData(item.fileServer, item.path); + return data.finalPath; + }; + String? choose = + await chooseListDialog(context, '请选择', ['预览图片', '保存图片']); + switch (choose) { + case '预览图片': + try { + var file = await load(); + Navigator.of(context).push(MaterialPageRoute( + builder: (context) => FilePhotoViewScreen(file), + )); + } catch (e) { + defaultToast(context, "图片加载失败"); + } + break; + case '保存图片': + try { + var file = await load(); + saveImage(file, context); + } catch (e) { + defaultToast(context, "图片加载失败"); + } + break; + } + } + }, + ); } List _buildControllers() {