Files
eh_downloader_flutter/lib/components/image.dart

45 lines
1.6 KiB
Dart

import 'dart:typed_data';
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';
final _log = Logger("ImageWithContextMenu");
class ImageWithContextMenu extends StatelessWidget {
const ImageWithContextMenu(this.data, {Key? key, this.uri}) : super(key: key);
final Uint8List data;
final String? uri;
@override
Widget build(BuildContext context) {
return ContextMenuWidget(
menuProvider: (_) {
var list = [
MenuAction(
title: AppLocalizations.of(context)!.copyImage,
callback: () {
final item = DataWriterItem();
item.add(Formats.jpeg(data));
ClipboardWriter.instance.write([item]).catchError((err) {
_log.warning("Failed to copy image to clipboard:", err);
});
})
];
if (uri != null) {
list.add(MenuAction(
title: AppLocalizations.of(context)!.copyImgUrl,
callback: () {
final item = DataWriterItem();
item.add(Formats.plainText(uri!));
ClipboardWriter.instance.write([item]).catchError((err) {
_log.warning("Failed to copy image to clipboard:", err);
});
}));
}
return Menu(children: list);
},
child: Image.memory(data));
}
}