Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre carregamento da primary color

No item 07 (vídeo), da unidade 1 do curso de persistencia com Flutter ([https://cursos.alura.com.br/course/flutter-persistencia-interna/task/65153]), o professor mostra que para carregar corretamente a cor primária que ele personalizou, precisou extrair a classe (momento 9:30). Ele extrai a classe e resolve o problema, mas não explicou o porquê disso. Alguém pode explicar o pq de a cor não ter sido carregada e só foi carregada quando extraiu a classe?

1 resposta
solução!

Fala Pedro, tudo bem?

Primeiramente excelente formulação de dúvida, e excelente iniciativa de querer saber mais, parabéns!

Todo segredo está no context.

Enquanto o Scaffold estava dentro da classe Bytebank note que o context que chega por parâmetro no Widget build(BuildContext context) não sabemos de onde vem. Não temos controle sobre ele.

Ele está vindo justamente do próprio Flutter, e o padrão de cores do Flutter é esse azul claro. Então quando você usa o:

Theme.of(context).primaryColor

Note que ele está pegando a cor do "contexto raiz" que é o que veio do Flutter, e ainda não foi alterado pelo MaterialApp.

Já quando extraimos o Scaffold, note que o StatelessWidget que criamos também precisa receber um context, e esse esse BuildContext vai ser o do pai dele, que é o nosso MaterialApp, já com as cores alteradas.

E por isso vem a primaryColor certa. Pois estamos usando agora o contexto certo.

No mais, é isso! Espero ter ficado claro, e qualquer coisa estamos aí!