这可能有些晚了...
使用以下代码导入'rendering'和'ui'包:
import 'dart:ui' as ui;
import 'package:flutter/rendering.dart';
添加下一个函数:
Future<ui.Image> canvasToImage(CustomPainter painter, Size size) async
{
ui.PictureRecorder recorder = ui.PictureRecorder();
Canvas canvas = Canvas(recorder);
if (painter != null) painter.paint(canvas, size);
return await recorder.endRecording().toImage(size.width.floor(), size.height.floor());
}
使用之前的函数,将内容绘制到一张图片上,比如名为“previousCanvas”的图片。
在你的“CustomPainter”的“paint”函数中,如果有可用的图片,则将其绘制出来。
if (previousCanvas != null) {
canvas.drawImage(previousCanvas, Offset(0, 0), Paint());
}
这是一个“异步”的操作,速度较慢但可行。我不知道是否有更好的方法来完成它。
此外,您可以修改该函数,将其绘制到“canvas”对象中,而不是使用“.paint”调用画家。