Флаттер: разница при использовании await - PullRequest
0 голосов
/ 15 апреля 2020

Представьте, что я вызываю async функцию с типом возврата Future<void>, который вызывается _uploadData внутри свойства onPressed Button, и пользовательский интерфейс не зависит от вызова функции.

1-й

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

или 2-й

onPressed: () {
    _uploadData();
}

Имеет ли это какое-либо значение? И если это не так, является ли 1-й просто лучшей практикой?

1 Ответ

2 голосов
/ 15 апреля 2020

да, эти коды имеют различное поведение. если вы используете синтаксис async / await, код не будет продолжаться и будет ждать, пока будущее не завершит свою работу. поэтому, если ваш пользовательский интерфейс не зависит от Future, не используйте async / await. в противном случае используйте это. если вы хотите понять это, откройте образец счетчика дротиков и добавьте к нему код ниже.

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

конвертируйте метод _incrementCounter () в код выше.

...