Flutter SpriteWidget Image network
SpriteWidgetを使用しているとき,ローカルのassetではなくネットワークから取得した場合があります.
そんなときは,ui.Imageをhttpから取得したresponse.bodyBytesから生成することができます.
こんな感じ final ui.Image image = await loadImage(response.bodyBytes);
使用例
import 'dart:async';
import 'package:http/http.dart';
import 'package:spritewidget/spritewidget.dart';
import 'dart:ui' as ui;
Sprite setNetworkImage(String url) async {
//////URLから画像取得
var response = await get(url);
if (response.statusCode != 200) {
print(response.statusCode.toString());
return;
}
// Convert the obtained ByteData into ui.Image
final ui.Image image = await loadImage(response.bodyBytes);
return new Sprite.fromImage(image);
}
Future<ui.Image> loadImage(List<int> img) async {
final Completer<ui.Image> imageCompleter = new Completer();
ui.decodeImageFromList(img, (ui.Image img) {
imageCompleter.complete(img);
});
return imageCompleter.future;
}