如何使用飞镖截取特定应用程序?

How to screenshot a specific application using dart?

使用此代码我可以获得整个屏幕的屏幕截图,但是如何在桌面操作系统上使用 dart 获取特定应用程序的屏幕截图? ( - 也不是一个整体,至少在桌面操作系统上不是)

RenderRepaintBoundary boundary = previewContainer.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
final directory = (await getApplicationDocumentsDirectory()).path;
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
print(pngBytes);
File imgFile =new File('$directory/screenshot.png');
imgFile.writeAsBytes(pngBytes);

Using this code I could get a screenshot of a whole screen

这并不是您显示的代码的真正作用。该代码指示应用程序中的 Flutter 渲染器将某些内容渲染为图像。让您自己的应用程序将其部分或全部 UI 绘制到图像而不是屏幕上与获取屏幕截图完全不同;后者涉及向 OS 询问渲染到屏幕的所有内容的输出,post OS-level 合成。在移动设备上,应用程序通常是全屏的,这些东西可能有相似的输出,但它们根本不是一回事。

没有 Dart API 可以截取实际屏幕截图。您必须编写使用本机 OS APIs 的本机代码,以便在您想要支持的每个桌面 OS 上截取屏幕截图,并通过 FFI 调用该代码(或者,如果您正在使用Flutter 就像您的示例代码一样,您可以使用平台通道)。