Вместо использования конструкторов .network
, предоставляемых виджетами Image
, получите файл Image с помощью сетевого запроса, как показано ниже:
HttpClient().getUrl(Uri.parse(STRING URL HERE))
.then((HttpClientRequest request) => request.close())
.then((HttpClientResponse response) =>
response.pipe(File('foo').openWrite()));
или лучший пример с использованием await
:
HttpClientRequest request = await HttpClient().getUrl(Uri.parse(STRING URL HERE));
HttpClientResponse response = await request.close();
File file = File('foo');
await response.pipe(file .openWrite());
Затем, используя image library
s PngDecoder
и JpegDecoder
классы декодера isValidFile
, вы можете проверить, является ли изображение форматом png или jpeg. Пример:
PngDecoder png = PngDecoder();
JpegDecoder jpg = JpegDecoder();
if(png.isValidFile(file) || jpg.isValidFile(file)) {
//use `Image.file(file)`
}
else {
//use `SvgPicture.file(file)`
}
Если это один из них, вы можете передать полученный файл конструктору Image.file
. Если это не так, используйте конструктор SvgPicture.file
.