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í!