如何使用dart截屏特定应用程序?

如何使用dart截屏特定应用程序?,dart,operating-system,screenshot,Dart,Operating System,Screenshot,使用这段代码,我可以获得整个屏幕的截图,但如何在桌面操作系统上使用dart获得特定应用程序的截图?? (-也不是一个整体,至少不是在桌面操作系统上) 使用这段代码,我可以得到整个屏幕的截图 这并不是您所展示的代码真正要做的。该代码指示应用程序中的颤振渲染器向图像渲染某些内容。让您自己的应用程序将其部分或全部UI绘制到图像而不是屏幕上,这与获取屏幕截图完全不同;后者涉及要求操作系统输出所有呈现到屏幕上的内容,即操作系统级合成。在移动设备上,应用程序通常是全屏的,这些东西可能有类似的输出,但它们根本

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

使用这段代码,我可以得到整个屏幕的截图

这并不是您所展示的代码真正要做的。该代码指示应用程序中的颤振渲染器向图像渲染某些内容。让您自己的应用程序将其部分或全部UI绘制到图像而不是屏幕上,这与获取屏幕截图完全不同;后者涉及要求操作系统输出所有呈现到屏幕上的内容,即操作系统级合成。在移动设备上,应用程序通常是全屏的,这些东西可能有类似的输出,但它们根本不是一回事


没有Dart API可以拍摄实际的屏幕截图。您必须编写本机代码,使用本机操作系统API在您想要支持的每个桌面操作系统上截图,并通过FFI调用该代码(或者,如果您在示例代码中使用的是颤振,您可以使用平台频道)。

谢谢,是的,我测试了它,它在桌面上根本不起作用,但我没有测试我的手机。。所以我已经在一个问题中进一步指出了。。
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);