Na minha aplicação tenho muitos ElevatedButtons
, que estilizo no tema principal. Preciso estilizar aqueles com ícone de maneira diferente daqueles sem ícone.
Aqui está o código com apenas uma propriedade, que no entanto se aplica a todos ElevatedButtons
, como posso selecionar aqueles com o ícone e dar-lhes um diferente borderRadius
?
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
),
),
),
);
}
Para conseguir isso, sugiro criar um widget personalizado como wrapper para o botão elevado. Exemplo:
O
icon
parâmetro é anulável (opcional), se estiver definido, deverá construir umElevatedButton.icon
com seu estilo especificado. Caso contrário, ele constrói um padrão com seu estilo (que deve ser diferente doElevatedButton.icon
do ').Saída:
Sem ícone:
Com ícone:
Observe que você pode se livrar do
style
botão padrão (sem ícone) se quiser manter o estilo noThemeData
widget principal do aplicativo. No entanto, eu não recomendo isso, pois haverá um widget explícito para lidar com a aparência dos botões elevados.