import 'dart:async'; import 'dart:typed_data'; import 'dart:ui'; import 'package:flame/flame.dart'; class Images { Map loadedFiles = {}; void clear(String fileName) { loadedFiles.remove(fileName); } void clearCache() { loadedFiles.clear(); } Future> loadAll(List fileNames) async { return Future.wait(fileNames.map(load)); } Future load(String fileName) async { if (!loadedFiles.containsKey(fileName)) { loadedFiles[fileName] = await _fetchToMemory(fileName); } return loadedFiles[fileName]; } Future _fetchToMemory(String name) async { ByteData data = await Flame.bundle.load('assets/images/' + name); Uint8List bytes = new Uint8List.view(data.buffer); Completer completer = new Completer(); decodeImageFromList(bytes, (image) => completer.complete(image)); return completer.future; } }