ensure method
Ensures initialization, optionally running a function.
Parameters:
fn: Optional function to run after initialization
Example:
await counter.ensure(() {
counter.value++; // Safe to write
});
Implementation
@override
Future<void> ensure([FutureOr<void> Function(T value)? fn]) {
if (!_isInitialized) {
final loadFuture = _load();
if (fn == null) {
return loadFuture;
}
return loadFuture.then((_) => fn(super.value));
}
if (fn == null) {
return Future.value();
}
final result = fn(super.value);
if (result is Future) {
return result;
}
return Future.value();
}