我正在阅读Flutter的文档。
在this page上,我观察到以下奇怪的方法。在该方法中,声明的返回类型为Future。但是,该方法在任何地方都没有return关键字。为什么会这样?
Future<void> _incrementCounter() async {
setState(() {
_counter++;
});
Directory directory = await getApplicationDocumentsDirectory();
final String dirName = directory.path;
await File('$dir/counter.txt').writeAsString('$_counter');
}
我已经确定所有flutter函数都返回一个值,并且默认返回值为null。但是,如果此方法始终返回null,那么为什么要声明返回类型为Future<void>
?
答案 0 :(得分:5)
这是因为该函数用async
修饰符标记:
Future foo() async {
print('hello world');
}
等同于
Future foo() {
try {
print('hello world');
return Future.value(null);
} catch (err) {
return Future.error(err);
}
}
答案 1 :(得分:1)
即使在Dart中,它也是一种可选的输入语言,这意味着您可以省略该类型,建议您提供它
当方法没有返回类型时,会附加return null
,因此在您的示例中,它适合return Future.value(null);