При перемещении мыши он перетаскивает значок или изображение, указанное при нажатии кнопки, с помощью 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();

0 ответов

Другие вопросы по тегам