当我试图用鼠标拖动图标时,单击图标时。例如,当单击圆形按钮图标时,鼠标会用它拖动圆圈。
但这并没有发生,所以我尝试通过图像来执行此操作,因此单击按钮图标,鼠标拖动使用 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();