Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 颤振:将图像添加到画布,编译时出错_Dart_Flutter - Fatal编程技术网

Dart 颤振:将图像添加到画布,编译时出错

Dart 颤振:将图像添加到画布,编译时出错,dart,flutter,Dart,Flutter,我正在尝试将图像从字节缓冲区添加到画布元素: Uint8List image = bd.buffer.asUint8List(++offset, len); await ui.decodeImageFromList(image, addIMage); 其中调用了回调函数addImage() Canvas painter是CustomPainter,如下所示: class CanvasPainter implements CustomPainter{ var items = new List

我正在尝试将图像从字节缓冲区添加到画布元素:

Uint8List image = bd.buffer.asUint8List(++offset, len);
await ui.decodeImageFromList(image, addIMage);
其中调用了回调函数addImage()

Canvas painter是CustomPainter,如下所示:

class CanvasPainter implements CustomPainter{

 var items = new List();
 void addItems(var item){
 items.add(item);}
 @override
 void paint(Canvas canvas, Size size){
 for (var item in items){ 
   canvas.drawImage(item,new Offset(50.0,50.0),new Paint();
 }

 ...
}



class WriteScreen extends StatefulWidget {
  ScreenState state;

  @override
  ScreenState createState() => state = new ScreenState();
}


class ScreenState extends State<WriteScreen> {
  GestureDetector touch;
  CustomPaint canvas;
  CanvasPainter canvasPainter;

  @override
  void initState() {
    super.initState();
    canvasPainter = new CanvasPainter(const Color.fromRGBO(255, 255, 255, 1.0));
  }

  @override
  Widget build(BuildContext context) {
    touch = new GestureDetector(
      onPanStart: panStart
    );
    final mediaQueryData = MediaQuery.of(context);
    canvasPainter.size = mediaQueryData.size;
    canvas = new CustomPaint( painter: canvasPainter);
  }
}
我被错误消息弄糊涂了,因为我正在从dart.ui导入图像,所以我不确定编译器为什么会抛出此异常


任何帮助/建议都将不胜感激。

在CanvasPainter中添加一些类型,并使用任何新的错误消息更新问题

import 'dart:ui' as ui;
import 'package:flutter/material.dart';
....
class CanvasPainter extends CustomPainter {
  List<ui.Image> items = new List<ui.Image>();

  void addItems(ui.Image item) {
    items.add(item);
  }

  @override
  void paint(Canvas canvas, Size size) {
    for (ui.Image item in items) {
      canvas.drawImage(item, new Offset(50.0, 50.0), new Paint());
    }
  }
}
将'dart:ui'导入为ui;
进口“包装:颤振/材料.省道”;
....
类CanvasPainter扩展了CustomPainter{
列表项=新列表();
无效附加项(ui.Image项){
项目。添加(项目);
}
@凌驾
空心油漆(帆布,尺寸){
用于(项中的ui.Image项){
canvas.drawImage(项目,新偏移量(50.0,50.0),新绘制());
}
}
}

能否共享canvas_painter.dart的第64行?那你的进口呢?这就成功了。“类型为#lib1::Image的值”的错误让我有点困惑,但实际上这是一个简单的问题。谢谢你的帮助
compiler message: lib/canvas_painter.dart:64:28: Error: A value of type '#lib1::Image' can't be assigned to a variable of type 'dart.ui::Image'.
compiler message: Try changing the type of the left hand side, or casting the right hand side to 'dart.ui::Image'.
compiler message:           canvas.drawImage(item, new Offset(50.0, 50.0), strokePaint);
compiler message:       
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
....
class CanvasPainter extends CustomPainter {
  List<ui.Image> items = new List<ui.Image>();

  void addItems(ui.Image item) {
    items.add(item);
  }

  @override
  void paint(Canvas canvas, Size size) {
    for (ui.Image item in items) {
      canvas.drawImage(item, new Offset(50.0, 50.0), new Paint());
    }
  }
}