Update context menu for image

This commit is contained in:
2023-09-09 13:52:27 +08:00
parent 4ec4d61656
commit 6a44090e24
7 changed files with 57 additions and 14 deletions

View File

@@ -3,17 +3,20 @@ import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:logging/logging.dart';
import 'package:super_context_menu/super_context_menu.dart';
import '../globals.dart';
import '../utils/clipboard.dart';
final _log = Logger("ImageWithContextMenu");
class ImageWithContextMenu extends StatelessWidget {
const ImageWithContextMenu(this.data,
{Key? key, this.uri, this.fmt = ImageFmt.jpg})
{Key? key, this.uri, this.dir, this.fileName, this.fmt = ImageFmt.jpg})
: super(key: key);
final Uint8List data;
final String? uri;
final ImageFmt fmt;
final String? fileName;
final String? dir;
@override
Widget build(BuildContext context) {
return ContextMenuWidget(
@@ -38,6 +41,18 @@ class ImageWithContextMenu extends StatelessWidget {
});
}));
}
if (fileName != null) {
list.add(MenuAction(
title: AppLocalizations.of(context)!.saveAs,
callback: () {
try {
platformPath.saveFile(fileName!, fmt.toMimeType(), data,
dir: dir ?? "");
} catch (err) {
_log.warning("Failed to save image:", err);
}
}));
}
return Menu(children: list);
},
child: Image.memory(data));