Flutter如何把Widget截取成一张图片并进行保存呢?flutter中保存Widget为图片时会用到组件RepaintBoundary和RenderRepaintBoundary。
1、首先要把保存成图片的组件用RepaintBoundary包一下,显示是把生成的SvgPicture组件放到child中进行渲染。
RepaintBoundary(
key: _globalKey,
child: Container(
margin: const EdgeInsets.all(10.0),
padding: const EdgeInsets.all(10.0),
decoration: BoxDecoration(
border: Border.all(color: Colors.grey, width: 0.5)),
child: signSvg, //signSvg是生成的SvgPicture组件
),
),
2、通过RenderRepaintBoundary进行处理
///生成svg,并保存成图片
Future<void> exportSVG() async {
final SvgPicture data = _controller.toSVG()!;
Directory documentsDir = await getApplicationDocumentsDirectory();
String documentPath = documentsDir.path;
File file =
File('$documentPath/${DateTime.now().millisecondsSinceEpoch}.png&#