Olá Alvaro!
Realmente pode ficar bem confuso o entendimento, mas eu vou tentar ser o mais claro possível:
for (Map<String, dynamic> linha in listaDeTarefas);
Para cada linha (ou entrada) dentro de listaDeTarefas, crie uma nova tarefa, etc etc...
O detalhe importante é alinha. Do mesmo jeito que dentro de um for
nós definimos um inteiro i que só existe dentro do escopo do laço de repetição, linha também só existe dentro do escopo do for
. A sacada é que para cada passo na repetição, uma nova linha é criada.
List<Map<String, Dynamic>> listaDeTarefas = [
{ chave: valor }, -----> linha
{ chave: valor }, -----> outra linha
{ chave: valor }, -----> mais uma linha
{ chave: valor }, -----> última linha
]
O que talvez possa confundir, é a tipagem de linha dentro dos parênteses. Mas basta pensar que é a mesma coisa que declarar int i
. Deixando claro também que não precisa ser Map<String, Dynamic>
. Tudo depende do conteúdo da lista. Como nesse caso a listaDeTarefas
é um List
do tipo Map<String, Dynamic>
, então cada entrada é do tipo Map<String, Dynamic>
.
Essa maneira é bem parecida com um forEach
, mas no caso do forEach
não precisamos tipar a entrada. Escrevendo a mesma coisa que o for
acima ficaria assim:
listaDeTarefas.forEach((entrada) {})
Espero que tenha ficado claro. Qualquer coisa eu tento explicar de outra maneira.