想象一下,我在asyncFuture<void>属性内调用返回类型为_uploadData的返回类型onPressedButton函数,并且UI不依赖于该函数调用。

第一个

onPressed: () async {
    await _uploadData();
},

或第二个
onPressed: () {
    _uploadData();
}

有什么区别吗?如果不是这样,那么第一个只是更好的做法吗?

最佳答案

是的,这些代码具有不同的行为。如果您使用async / await语法,则该代码将不会继续,并且将等到将来完成其工作。因此,如果您的UI不依赖于Future,请不要使用async / await。否则使用它。如果您想了解它,请打开the dart-pad counter sample并添加以下代码。

  void _incrementCounter() async{
    await Future.delayed(Duration(seconds: 5));
    setState(() {
      _counter++;
    });
  }

将_incrementCounter()方法转换为上述代码。

10-06 12:43
查看更多