При перемещении мыши он перетаскивает значок или изображение, указанное при нажатии кнопки, с помощью drawImage на холсте во флаттере.
Когда я пытаюсь перетащить значок с помощью мыши, при нажатии на значок. Например, при нажатии на значок кнопки с кружком мышь перетаскивает круг вместе с ним.
Но этого не происходит, поэтому я попытался сделать это с помощью изображения, поэтому при нажатии на значок кнопки мышь перетаскивает круг, нарисованный с помощью класса drawCircle, расширяющего CustomPainter на холсте. Это происходит, поэтому я попробовал то же самое, перетащив изображение с помощью мыши, т. Е. при нажатии перетаскивает изображение значка.
Этого не происходит, и изображение не отображается, но в консоли говорится, что изображение загружено и работает правильно. Как лучше?
Вот мой код: - файл класса художника
class ImagePainter extends CustomPainter {
final ui.Image image;
late Offset offset;
ImagePainter(this.image);
@override
void paint(Canvas canvas, Size size) {
final paint = Paint();
canvas.drawImage(image, offset, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
Class where above class is used:-
class ImageController implements ToolController {
final SketchController _sketchController;
final OnStateUpdated _onStateUpdated;
ui.Image? image;
ImageController(this._sketchController, this._onStateUpdated) {
loadImage('lib/assets/spot.jpeg');
}
Future loadImage(String path) async {
try{
print("begin load image ${path}");
final data = await rootBundle.load(path);
print("begin load image1 ");
final bytes = data.buffer.asUint8List();
print("begin load image2 ");
final image = await decodeImageFromList(bytes);
print("begin load image3 ");
this.image = image;
print("Image loaded");
}
catch(e){
print(e);
}
}
@override
ImagePainter? imagePainter;
int nCurrentLayerID = 0;
@override
void panStart(PointerDownEvent details) {
}
@override
void panUpdate(PointerMoveEvent details) {
if (image!=1) {
imagePainter = ImagePainter(image!);
imagePainter!.offset=details.localPosition;
} else {
print("ImagePainter not working");
toolPainter = IconPainter();