transform<T, R> method
Future<R>
transform<
T, R>([ - R transformer(
- T internal
)?
])
Implementation
Future<R> transform<T, R>([R Function(T internal)? transformer]) async {
await load<T>();
if (transformer == null) {
// Identity transform: just return the cached value as R
if (_data[T] is! R) {
throw StateError(
"Type mismatch: requested $R, cached value is ${_data[T].runtimeType}");
}
return _data[T] as R;
}
// Apply transformer and cache by type R
if (_data.containsKey(R))
return _data[R] as R;
try {
final result = transformer(_data[T] as T);
_data[R] = result;
return result;
}
on Exception catch (e) {
throw AssetException("error transforming asset assets/$path", cause: e);
}
}