This commit is contained in:
2023-09-07 19:48:27 +08:00
parent 01764d005f
commit 1af4ed6313
3 changed files with 91 additions and 24 deletions

View File

@@ -2,19 +2,11 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:logging/logging.dart';
import 'package:super_clipboard/super_clipboard.dart';
import 'package:super_context_menu/super_context_menu.dart';
import '../platform/to_png_none.dart'
if (dart.library.html) '../platform/to_png.dart';
import '../utils/clipboard.dart';
final _log = Logger("ImageWithContextMenu");
enum ImageFmt {
jpg,
png,
gif,
}
class ImageWithContextMenu extends StatelessWidget {
const ImageWithContextMenu(this.data,
{Key? key, this.uri, this.fmt = ImageFmt.jpg})
@@ -31,16 +23,7 @@ class ImageWithContextMenu extends StatelessWidget {
title: AppLocalizations.of(context)!.copyImage,
callback: () async {
try {
final item = DataWriterItem();
if (!kIsWeb) {
item.add(fmt == ImageFmt.jpg
? Formats.jpeg(data)
: Formats.png(data));
} else {
item.add(Formats.png(
fmt == ImageFmt.jpg ? await jpgToPng(data) : data));
}
await ClipboardWriter.instance.write([item]);
await copyImageToClipboard(data, fmt);
} catch (err) {
_log.warning("Failed to copy image to clipboard:", err);
}
@@ -50,9 +33,7 @@ class ImageWithContextMenu extends StatelessWidget {
list.add(MenuAction(
title: AppLocalizations.of(context)!.copyImgUrl,
callback: () {
final item = DataWriterItem();
item.add(Formats.plainText(uri!));
ClipboardWriter.instance.write([item]).catchError((err) {
copyTextToClipboard(uri!).catchError((err) {
_log.warning("Failed to copy image to clipboard:", err);
});
}));