Существует два класса с именем Image
во флаттере, в разных пакетах.
Есть Виджет , который ведет себя как виджет и может быть создан из ресурса, из памяти илииз сети через ее именованные конструкторы.
Существует также пакет пользовательского интерфейса Изображение , который используется при рисовании на более низком уровне, например в CustomPainter
.Поскольку эта версия находится в пакете ui
, она обычно импортируется с префиксом ui
следующим образом:
import 'dart:ui' as ui;
Не импортировать material
как ui
!Это приведет к путанице.
Чтобы создать виджет, используйте конструктор Image.asset
, передав ему имя актива.
Чтобы сделать ui.Image
из актива, используйте этот фрагмент:
Future<ui.Image> load(String asset) async {
ByteData data = await rootBundle.load(asset);
ui.Codec codec = await ui.instantiateImageCodec(data.buffer.asUint8List());
ui.FrameInfo fi = await codec.getNextFrame();
return fi.image;
}