Having an asynchronous function that doesn't return a value, what's the ideal return type Future<Null>
or Future<void>
?, or more specifically, what's the difference in using either? Both are legal, and in both cases the return value of the function is a Future
that resolves to null
. The following code prints null
two times:
import 'dart:async';
Future<void> someAsync() async {}
Future<Null> otherAsync() async {}
main() {
someAsync().then((v) => print(v));
otherAsync().then((v) => print(v));
}
The type
Null
only allows the valuenull
The type
void
allows values of any type, but communicates that the value shouldn't be used.It's not yet clear to me how tools support will treat
void
. There will probably linter rules that hint or warn at usingvoid
values.Null
was used instead ofvoid
previously becausevoid
was only supported as return type of methods/functions.