Флаттер - Как нарисовать изображение с камеры / галереи на холсте? - PullRequest
0 голосов
/ 30 января 2019

Я учусь трепетать и наткнулся на рисунок из галереи / камеры на холсте, используя CustomPainter.Мой код рисует изображение, но по какой-то причине он просто показывает небольшую часть целого изображения (не полную картинку) на экране.

_loadAssetAsImage вызывается в Функция initState () где ключ - это фактический путь к изображению.

void _loadImage( String key ) async {
var data = await rootBundle.load( key );
var codec = await ui.instantiateImageCodec(data.buffer.asUint8List());
codec.getNextFrame().then((info){
  setState(() {
    isImageloaded = true;
    image = info.image;
  });
});
  }

После вызова setState , затем вызывается _buildImage () , который находится в функции build ()

Widget _buildImage() {
if (this.isImageloaded) {
  return new CustomPaint(
      painter: new ImageEditor(image: image),
  );
} else {
  return new Center(child: new Text('loading'));
}
  }

Здесь ImageEditor - это пользовательский класс, расширяющий CustomPainter

class ImageEditor extends CustomPainter {
  ui.Image image;
  ImageEditor({this.image});

  @override
  void paint(Canvas canvas, Size size) {
    canvas.drawImage(image, new Offset(0.0, 0.0),new Paint());
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) {
    return false;
  }
}

Здесь все выглядит правильно, но не в состоянии понять, почему толькоочень маленькая часть изображения отображается на весь экран вместо полной картинки.Пожалуйста, помогите мне, если у кого-нибудь есть хорошее предложение о том, что отсутствует в кодеenter image description here

Это то, что я ожидал

enter image description here Это то, что я получаю

...