Надеюсь, вы не изменяете список количеств, пока он работает. Если это не так, выполняют ли функции вставки что-либо асинхронно? Затем вам нужно специально указать компилятору Dart остановиться на ключевом слове await. Даже если это не так, вы все равно можете использовать их для синхронного выполнения вашего процесса, но это не очень хорошая идея, когда вы делаете тяжелые вычисления
Для этого ваша функция должна возвращать Future
void insertSomething(){}
К
Future<void> insertSomething(){}
и измените ваш метод onPressed на
() async {
if (...) {
for (...) {
await insertSomething()
}
}
}
Дело в том, что Дарт работает подобно Node-JS неблокирующим образом, поэтому Асинхронные события могут завершаться в свое время, и когда они будут выполнены, они будут добавлены в очередь событий, и событие l oop заберет его в следующем цикле.
Теперь, когда вы не хотите это поведение, которое вы используете async / await, чтобы заставить событие l oop ожидать обработки указанного c. Вы можете взглянуть на дартпад ниже, сначала запустите его нормально, а затем попробуйте удалить ключевые слова await из результатов ()
[https://dartpad.dev/4bf516fc43a61d4a8ad5870e61eeb1e4] [1]