Dictionary 如何使用映射触发异步请求,但获得聚合结果?

Dictionary 如何使用映射触发异步请求,但获得聚合结果?,dictionary,asynchronous,dart,Dictionary,Asynchronous,Dart,我有密码: 导入'dart:async'; Future expensiveCallFromALib(int值)异步{ 打印(“费用调用($value)”; 返回值+1; } 测试(){ Mapinput={“一”:1,“二”:2}; 映射结果={}; 印刷品(“A”); input.forEach((字符串键,int值){ expensiveCallFromALib(值)。然后((int值){ 结果[键]=值; }); 印刷品(“B”); }); 印刷品(“C”); 打印(结果); } mai

我有密码:

导入'dart:async';
Future expensiveCallFromALib(int值)异步{
打印(“费用调用($value)”;
返回值+1;
}
测试(){
Mapinput={“一”:1,“二”:2};
映射结果={};
印刷品(“A”);
input.forEach((字符串键,int值){
expensiveCallFromALib(值)。然后((int值){
结果[键]=值;
});
印刷品(“B”);
});
印刷品(“C”);
打印(结果);
}
main(){
test();
}
。。。与输出

A
B
B
C
{}
expensiveCall(1)
expensiveCall(2)
。。。但是我想要

A
B
expensiveCall(1)
B
expensiveCall(2)
C
{one: 2, two: 3}
关键是,我不能改变expensiveCallFromALib方法

test() async {
  Map<String, int>input = {"one":1, "two":2};
  Map result = {};

  print("A");
  for(final key in input.keys) {
    int value = await expensiveCallFromALib(input[key]);
      result[key] = value;

    print("B");
  }
  print("C");
  print('result: $result');
}

HTML OUTPUT
CONSOLE
A
expensiveCall(1)
B
expensiveCall(2)
B
C
result: {one: 2, two: 3}