Add context menu for image

This commit is contained in:
2023-09-04 22:37:02 +08:00
parent c3e46170d4
commit a2e57460d7
11 changed files with 139 additions and 4 deletions

26
lib/components/image.dart Normal file
View File

@@ -0,0 +1,26 @@
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:super_clipboard/super_clipboard.dart';
import 'package:super_context_menu/super_context_menu.dart';
class ImageWithContextMenu extends StatelessWidget {
const ImageWithContextMenu(this.data, {Key? key}) : super(key: key);
final Uint8List data;
@override
Widget build(BuildContext context) {
return ContextMenuWidget(
menuProvider: (_) {
return Menu(children: [
MenuAction(
title: AppLocalizations.of(context)!.copyImage,
callback: () {
final item = DataWriterItem();
item.add(Formats.jpeg(data));
ClipboardWriter.instance.write([item]);
}),
]);
},
child: Image.memory(data));
}
}

View File

@@ -6,6 +6,7 @@ import 'package:logging/logging.dart';
import '../api/client.dart';
import '../api/gallery.dart';
import '../globals.dart';
import 'image.dart';
final _log = Logger("Thumbnail");
@@ -110,7 +111,7 @@ class _Thumbnail extends State<Thumbnail> {
sigmaX: 10,
sigmaY: 10,
tileMode: TileMode.decal),
child: Image.memory(_data!))),
child: ImageWithContextMenu(_data!))),
SizedBox(
width: widget.width.toDouble(),
height: widget.height.toDouble(),
@@ -126,7 +127,7 @@ class _Thumbnail extends State<Thumbnail> {
))
],
)
: Image.memory(_data!)
: ImageWithContextMenu(_data!)
: Text("Error $_error"));
}
}