mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-02 20:13:50 +08:00
34 lines
848 B
Dart
34 lines
848 B
Dart
import 'package:flutter/services.dart' show rootBundle;
|
|
import 'dart:typed_data';
|
|
import 'dart:ui';
|
|
import 'dart:async';
|
|
|
|
class Images {
|
|
|
|
Map<String, Image> loadedFiles = new Map();
|
|
|
|
void clear(String fileName) {
|
|
loadedFiles.remove(fileName);
|
|
}
|
|
|
|
void clearCache() {
|
|
loadedFiles.clear();
|
|
}
|
|
|
|
Future<Image> load(String fileName) async {
|
|
if (!loadedFiles.containsKey(fileName)) {
|
|
loadedFiles[fileName] = await _fetchToMemory(fileName);
|
|
}
|
|
return loadedFiles[fileName];
|
|
}
|
|
|
|
Future<Image> _fetchToMemory(String name) async {
|
|
ByteData data = await rootBundle.load('assets/images/' + name);
|
|
Uint8List bytes = new Uint8List.view(data.buffer);
|
|
Completer<Image> completer = new Completer();
|
|
decodeImageFromList(bytes, (image) {
|
|
completer.complete(image);
|
|
});
|
|
return completer.future;
|
|
}
|
|
} |