Completes future with the supplied values.
The value must be either a value of type
or a future of type
If the value is itself a future, the completer will wait for that future to complete, and complete with the same result, whether it is a success or an error.
Calling complete or completeError must be done at most once.
All listeners on the future are informed about the value.
void complete([FutureOr<T> value]);