ensure method

  1. @override
Future<void> ensure([
  1. FutureOr<void> fn(
    1. T value
    )?
])
override

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();
}