Future methods dart

как дождаться выполнение асинхронного метода dart?


Ответы (2 шт):

Автор решения: NearPin

Короче как я понял этого сделать нельзя но если у вас есть какой то код который зависит от этого, то лучше сделать проверку. Например у меня был list которой использовался в переопрeделeнном методе

Widget build(){
    list = getList();
    return new Scaffold();
    }

Решение:

void setListInfo() async{
list = getList();
}
Widget build(){
if(await setListInfo()){
return new Scaffold(body: Text("Список создан"));
}else{
return new Scaffold(body: Text("Список не создан"));
}
}
→ Ссылка
Автор решения: MiT

Пример 1, работает асинхронно:

Future<void> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => print('Large Latte'));
}

void main() {
  fetchUserOrder();
  print('Fetching user order...');
}

// Console:  
// Fetching user order...
// Large Latte

Пример 2, работает асинхронно-синхронно:

Future<void> fetchUserOrder() {
  return Future.delayed(Duration(seconds: 2), () => print('Large Latte'));
}

void main() {
  fetchUserOrder().then((v){
    print('Fetching user order...');
  });
}

// Console:
// Large Latte
// Fetching user order...

А еще есть виджет для работы с Future, FutureBuilder.


Как правильно использовать: Futures, Streams и Async/Await во Flutter?

Asynchronous programming: futures, async, await

→ Ссылка