Как сделать снимок экрана конкретного приложения c с помощью dart? - PullRequest
0 голосов
/ 04 августа 2020

Используя этот код, я мог бы получить снимок экрана всего экрана, но как мне получить снимок экрана определенного c приложения с помощью dart в операционной системе настольного компьютера ?? (: ~: text = To% 20take% 20a% 20screenshot% 20of% 20your% 20widget% 2C% 20make, app% 20folder% 2C% 20and% 20run% 20your% 20widget% 2C% 20like% 20this% 3A - тоже не совсем целое, по крайней мере, не в настольной операционной системе)

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);

1 Ответ

1 голос
/ 05 августа 2020

Используя этот код, я мог бы получить снимок экрана всего экрана

Это не совсем то, что показывает код, который вы показали. Этот код инструктирует средство визуализации Flutter в вашем приложении для рендеринга чего-либо в изображение. Если ваше собственное приложение отрисовывает часть или весь свой пользовательский интерфейс к изображению вместо экрана, это полностью отличается от получения снимка экрана; во втором случае операционная система запрашивает вывод всего, что рендерится на экран, после композиции на уровне ОС. На мобильных устройствах, где приложения обычно работают в полноэкранном режиме, эти вещи могут иметь аналогичный вывод, но это совсем не одно и то же. Вам нужно будет написать собственный код, который использует собственные API-интерфейсы ОС, чтобы делать снимки экрана на каждой настольной ОС, которую вы хотите поддерживать, и вызывать этот код через FFI (или, если вы используете Flutter, как в вашем примере кода, вы можете использовать каналы платформы) .

...