想象一下,我在async
的Future<void>
属性内调用返回类型为_uploadData
的返回类型onPressed
的Button
函数,并且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()方法转换为上述代码。