В очереди есть список функций, где каждая функция загружает файл. Любые идеи о том, как я могу изначально запустить 3 одновременных функции одновременно, и после завершения любой из этих загрузок / функций завершается, мы хотим запустить следующие загрузки / функции в очереди. Одновременно будет выполнено максимум 3 загрузки / функции.
Я пробовал это, но это не дает мне результата. Я думаю, что это петля замораживает экран.
static void startBackgroundProcess(Iterable<dynamic> iterable, Future<bool> Function(Order) function) async {
Iterable<dynamic> _iterable = iterable;
int lenght = iterable?.length ?? 0;
List<dynamic> queue = [];
int active = 0;
int curr = 0;
int upper = 1;
_iterable.forEach((i) {
queue.add(i);
});
while (queue.isNotEmpty) {
if (active < 3) {
active++;
function(queue[0]).then((x) {
queue.removeAt(0);
active--;
});
active++;
function(queue[1]).then((x) {
queue.removeAt(1);
active--;
});
active++;
function(queue[2]).then((x) {
queue.removeAt(2);
active--;
});
}
}
}