Я предполагаю, что вы изменили свой код перед публикацией .. как показывает комментарий jamesdlin , ваш код будет работать.Таким образом, чтобы решить вашу исходную проблему, вам просто нужно создать новую переменную для каждой итерации, я предполагаю, что ваш исходный код имел переменную, определенную вне цикла.
, то есть, чтобы показать @jamesdlin example :
// working as expected
for (int i = 0; i < 10; i += 1) {
final int current = i;
functionList.add(() => print('$i $current')); // 0 0, 1 1, 2 2, ...
}
// current will be updated
int current;
for (int i = 0; i < 10; i += 1) {
current = i;
functionList.add(() => print('$i $current')); // 0 9, 1 9, 2 9, ...
}
в итоге: изменяемое состояние - это зло ;-) обнимите final
, так что вы все равно не будете создавать свои переменные вне цикла.