From 6d8a61659ae983b5b89b5dc9fff6062f3b2aa280 Mon Sep 17 00:00:00 2001 From: lifegpc Date: Fri, 14 Feb 2025 17:59:40 +0800 Subject: [PATCH] feat: Add save image functionality to single page viewer --- lib/viewer/single.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/viewer/single.dart b/lib/viewer/single.dart index 63421a2..141420d 100644 --- a/lib/viewer/single.dart +++ b/lib/viewer/single.dart @@ -8,6 +8,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:go_router/go_router.dart'; import 'package:keymap/keymap.dart'; import 'package:logging/logging.dart'; +import 'package:path/path.dart'; import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view_gallery.dart'; import 'package:quiver/collection.dart'; @@ -18,6 +19,7 @@ import '../components/fit_text.dart'; import '../globals.dart'; import '../platform/media_query.dart'; import '../provider/dio_image_provider.dart'; +import '../utils.dart'; import '../utils/clipboard.dart'; final _log = Logger("SinglePageViewer"); @@ -248,6 +250,19 @@ class _SinglePageViewer extends State _log.warning("Failed to copy image to clipboard:", err); }); })); + list.add(MenuAction( + title: i18n.saveAs, + callback: () { + try { + platformPath.saveFile( + basenameWithoutExtension(_pages![_index].name), + fmt.toMimeType(), + data, + dir: isAndroid ? widget.gid!.toString() : ""); + } catch (err, stack) { + _log.warning("Failed to save image: $err\n$stack"); + } + })); } return Menu(children: list); },