Я учусь трепетать и наткнулся на рисунок из галереи / камеры на холсте, используя 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;
}
}
Здесь все выглядит правильно, но не в состоянии понять, почему толькоочень маленькая часть изображения отображается на весь экран вместо полной картинки.Пожалуйста, помогите мне, если у кого-нибудь есть хорошее предложение о том, что отсутствует в коде
Это то, что я ожидал
Это то, что я получаю