我有一张上面带有container
的图片。我希望能够在容器内编辑TextField
并将图像作为图像保存到设备。
我当前的设置是stack
,其中图像和容器彼此叠放。如何将其另存为图像?
请注意,我不想保存整个屏幕,只保存图像及其上的任何内容。
Future<File> createWave(BuildContext context, GlobalKey screen) async {
RenderRepaintBoundary boundary = screen.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final directory = (await getApplicationDocumentsDirectory()).path;
File imgFile = File('$directory/screenshot.png');
await imgFile.writeAsBytes(pngBytes);
return imgFile;
}
答案 0 :(得分:0)
非常感谢,因为flutter使用Skia渲染了其图形,因此我们能够拍摄小部件的屏幕截图,并且已经有一个非常不错的article,它可以执行类似的操作。基本上,您将小部件包装在RepaintBoundary中,并为其分配一个键,然后使用该键调用RenderObject.toImage方法。这是另一个simple example要做的。 :D
多么简单