Я пытаюсь написать функцию дротика, которая увеличит вес игроков и в итоге даст вам средний вес всех игроков. Я использую пакет executor, чтобы получить вес 3 игроков за один раз, а затем, как только вес игрока получен, я добавляю его в список.
Выдайте его, так как я не могу добавить await before для цикла loop, ибез ожидания кода после выполнения цикла for. В любом случае я могу как-то приостановить программу или вернуть значение только после выполнения задач исполнителя?
avgWeight(int n)async {
List playersWeight=[];
Executor executor = Executor(concurrency: 3);
for (int i = 0; i < n; i++) {
// executor.join(withWaiting: true).;
executor.scheduleTask(() async {
int currentPlayerWeight = await PlayerDetail(i+1).fetchPlayerWeight();
print('courrentPlayerNo: ${i+1} currentPlayerWeight : $currentPlayerWeight ');
if(currentPlayerWeight!=null){
await playersWeight.add(currentPlayerWeight);
}
});
await executor.join(withWaiting:true);
print(playersWeight);//for debugging only. this shuld be printed only when all tasks are completed.
}
//playersWeight.reduce((a, b) => a + b) / playersWeight.length
}
Отладочные операторы печати списка весов должны быть напечатаны только после завершения всех задач. если значение n равно 4, список должен быть напечатан только один раз после добавления всех 4 элементов, но для меня его печать с каждым элементом.
токовый выход
[200]
[200, 190]
[200, 190, 265]
[200, 190, 265, 255]
необходимый выход:
[200, 190, 265, 255]
Мне нужно вернуть среднюю массу, но я не могу этого сделать из-за текущей проблемы.