飞镖:如何从多个完成者创建未来

时间:2020-01-14 12:58:35

标签: flutter dart socket.io

我想用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 }}
}

只要有此事件,我的SocketService().listenForEvent就会被呼叫。我想将所有对话都写入数据库,然后在所有对话完成后就知道该状态。 因此,我需要等待或根据这些完成者列表创建未来。我该如何实现?

1 个答案:

答案 0 :(得分:3)

您可以使用Future.wait

return Future.wait(_completerList.map((e) => e.future));