Цикл forEach не выполняется, как если бы список был пуст, несмотря на то, что debug показывает 2 элемента в списке

#dart #flutter

#dart #флаттер

Вопрос:

Я получил этот фрагмент кода, выполняемый в onPressed (). В списке есть 2 элемента, они отображаются во время отладки.

 print("Got ${myList.length} elements");
myList.forEach((element) => () {
    print('Hello there !!!!');
});
  

Я вижу «Есть 2 элемента» в консоли.
Однако отладка не переходит в цикл, и в консоли больше ничего не отображается.

Я относительно новичок в Flutter / Dar, и я застрял, поэтому я был бы признателен за любую помощь. Спасибо.

Ответ №1:

Измените это:

 myList.forEach((element) => () {
print('Hello there !!!!');
});
  

К этому:

 myList.forEach((element) {
print('Hello there !!!!');
});
  

Дополнительная информация здесь: https://api.dartlang.org/stable/2.2.0/dart-core/Iterable/forEach.html

Комментарии:

1. Это сработало. Спасибо. Не могли бы вы, пожалуйста, объяснить разницу? Я еще не полностью изучил все детали синтаксиса Dart.

2. Я обновил свой ответ, проверьте правильность реализации

3. => означает return . В первом коде вы просто возвращаете функцию, но во втором вы фактически ее запускаете.

4. @MichaelYuwono спасибо. Это было то, чего я не понял.