为什么这个Flutter示例没有return关键字?

时间:2019-06-20 15:57:28

标签: flutter dart

我正在阅读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>

2 个答案:

答案 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);

请参阅Default return type in Dart