Implement writeImageToClipboard on macOS.

This commit is contained in:
2025-03-27 19:40:51 +08:00
parent d6087e5f59
commit d83d679eb9
2 changed files with 29 additions and 1 deletions

View File

@@ -15,8 +15,11 @@ Future<void> writeImageToClipboard(Uint8List imageBytes) async {
"data": Uint8List.view(data!.buffer)
});
image.dispose();
} else if (Platform.isMacOS) {
await channel.invokeMethod("writeImageToClipboard", {
"data": imageBytes,
});
} else {
// TODO: Implement for other platforms
throw UnsupportedError("Clipboard image is not supported on this platform");
}
}

View File

@@ -38,6 +38,31 @@ class AppDelegate: FlutterAppDelegate {
result(FlutterMethodNotImplemented)
}
}
let clipboardChannel = FlutterMethodChannel(name: "venera/clipboard", binaryMessenger: controller.engine.binaryMessenger)
clipboardChannel.setMethodCallHandler { (call, result) in
switch call.method {
case "writeImageToClipboard":
guard let arguments = call.arguments as? [String: Any],
let data = arguments["data"] as? FlutterStandardTypedData else {
result(FlutterError(code: "INVALID_ARGUMENTS", message: "Invalid arguments", details: nil))
return
}
guard let image = NSImage(data: data.data) else {
result(FlutterError(code: "INVALID_IMAGE", message: "Could not create image from data", details: nil))
return
}
let pasteboard = NSPasteboard.general
pasteboard.clearContents()
pasteboard.writeObjects([image])
result(true)
default:
result(FlutterMethodNotImplemented)
}
}
}
func getDirectoryPath() {