В моем приложении Flutter я использую CustomPainter, чтобы позволить пользователю рисовать свою подпись на экране. Мне нужно найти способ сохранить это как изображение.
PictureRecorder прекрасно работает, когда вы можете передать объект PictureRecorder
на холст в соответствии с предыдущие ответы StackOverflow:
final recorder = new PictureRecorder();
Canvas(recorder).drawSomething;
final picture = recorder.endRecording();
Однако при использовании CustomPainter
холст является аргументом функции Paint()
.
class myPainter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
drawToCanvas(canvas);
@override
bool shouldRepaint(CustomPainter old) {
return false;
}
Итак, вкратце:
Как я могу создать изображение из CustomPainter?
Если ответ заключается в использовании PictureRecorder, как я могу передать рекордер на холст?
Вам не нужно передавать PictureRecorder
на холст в методе CustomPainter
paint
. Вместо этого вы можете вызвать краску напрямую с другого холста, на котором есть записывающее устройство. Например:
Future<Image> getImage() async {
final PictureRecorder recorder = PictureRecorder();
myPainter.paint(Canvas(recorder), mySize);
final Picture picture = recorder.endRecording();
return await picture.toImage(width, height);
}
Привет, мой друг, у меня ошибка при попытке реализовать твой ответ. myPainter — это класс, так как же вы с этим справляетесь?