Dart 2:Future<void> 和 Future<Null> 的区别

Dart 2: Difference between Future<void> and Future<Null>

有一个没有 return 值的异步函数,什么是理想的 return 类型 Future<Null>Future<void>?,或者更具体地说,有什么区别在使用吗?两者都是合法的,并且在这两种情况下,函数的 return 值都是解析为 nullFuture。以下代码打印 null 两次:

import 'dart:async';

Future<void> someAsync() async {}
Future<Null> otherAsync() async {}

main() {
    someAsync().then((v) => print(v));
    otherAsync().then((v) => print(v));
}

类型Null只允许值null

类型 void 允许任何类型的值,但表明不应使用该值。

我还不清楚工具支持将如何对待 void。可能会有 linter 规则提示或警告使用 void 值。

之前使用

Null 而不是 void 因为 void 仅支持 return 类型的 methods/functions.