Dart:如何从多个完成者中创造未来

Kri*_* CN 1 socket.io dart flutter

我想用 dart/flutter 的多个完成者创造一个未来。

Future getAndWriteToDB(conversations){
    List<Completer> _completerList = List();

    for (var i = 0; i < conversations.length; i++) {
      final conversation = conversations[i];
      _completerList.add(Completer());
      SocketService()
          .listenForEvent('mylistenerkey')
          .then((data) {
         _messagesDao.insertMessages(messages).then((result) {
            if (result == false) {
              print("writing to db for message failed");
            } else {
              _completerList[i].complete(true);
            }
          });
        }
      });
    }


    return {{ wait for these completers complete event }}
}
Run Code Online (Sandbox Code Playgroud)

SocketService().listenForEvent每当该活动可用时,我都会接到电话。我想将所有对话写入数据库,然后一旦所有这些都完成,就可以了解该状态。所以我需要根据这些完成者列表等待或创造未来。我怎样才能实现这个目标?

Ale*_*uin 6

您可以使用Future.wait

return Future.wait(_completerList.map((e) => e.future));
Run Code Online (Sandbox Code Playgroud)