complete method Null safety
- [FutureOr<
T> ? value]
Completes operation with value
.
If value
is a Future the operation will complete
with the result of that Future
once it is available.
In that case isComplete
will be true
before the operation
is complete.
If the type T
is not nullable value
may be not be omitted or null
.
This method may not be called after either complete or completeError has been called once. The isCompleted is true when either of these methods have been called.
Implementation
void complete([FutureOr<T>? value]) {
if (!_mayComplete) throw StateError('Operation already completed');
_mayComplete = false;
if (value is! Future<T>) {
_completeNow()?.complete(value);
return;
}
if (_inner == null) {
// Make sure errors from [value] aren't top-leveled.
value.ignore();
return;
}
value.then((result) {
_completeNow()?.complete(result);
}, onError: (Object error, StackTrace stackTrace) {
_completeNow()?.completeError(error, stackTrace);
});
}