Fala Fernando, tudo bom?
Vê, o lance é que primarySwatch
não é uma cor simples, é uma MaterialColor
. Uma MaterialColor
já é programada com os tons específicos de uma cor que um aplicativo vai usar.
A primaryColor
é um desses tons. Para ser exato, primaryColor
é normalmente igual a primarySwatch[500]
.
Geralmente é melhor definir um primarySwatch
em vez de primaryColor
. Porque alguns componentes de material podem usar um tom diferente da cor primária para coisas como sombra, borda, etc. É o caso do botão.
MAS! A boa notícia é que você pode criar seu próprio MaterialColor(int, Map<int,color>)
, o que ele pede é apenas um inteiro que representa o valor da cor primaria e um Map<int,color>
com as cores que você quer usar. Algo tipo essa brincadeira que eu fiz aqui:
primarySwatch: MaterialColor(
0xFF1B5E20,
{
50: Colors.green[500],
100: Colors.green[600],
200: Colors.green[700],
300: Colors.green[800],
500: Colors.green[900],
600: Colors.blue[500],
700: Colors.blue[600],
800: Colors.blue[700],
900: Colors.blue[800],
},
),
Duas observações:
- Se for criar um MaterialColor personalizado, coloque os valores de 50 a 900 pra não dar nenhum problema em nenhum material depois.
- O valor que ele pede no int é como se fosse um hexadecimal da cor, o 0xFF equivale ao # e o que vem depois é o hexa normal. Então 0xFF1B5E20 equivale a #1B5E20.
Se você quiser descobrir o valor de uma cor específica que o Flutter já tem, basta pressionar Ctrl e clicar na cor:
Outro caminho para resolver o problema da label, é usar isso dentro do seu InputDecoration do TextField:
labelStyle: TextStyle(
color: Colors.white,
),
No mais é isso! Espero ter ajudado, e bons estudos!