Как применить тему на MaterialButton или RaisedButton? - PullRequest
0 голосов
/ 29 ноября 2018

Может ли кто-нибудь помочь указать, как определить базовую тему для кнопки и использовать ее для каждой кнопки?Куда бы я ни посмотрел, я нашел только textTheme, но не buttonTheme пример?

Даже на buttonTheme как определить цвета текста?Потому что на самой кнопке мы можем сделать это прямо как color: Colors.blue

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Похоже, вам также нужно предоставить textColor для вашей кнопки.Как насчет создания вашей пользовательской кнопки?

class MyButton extends StatelessWidget {
  final String text;
  final Color textColor;
  final Color buttonColor;
  final Function() onPressed;
  MyButton({
    @required this.text,
    this.buttonColor = const Color(0xFF000000) /** Default buttonColor */,
    @required this.onPressed,
    this.textColor = const Color(0xFFDDDDDD) /** Default textColor */,
  });
  @override
  Widget build(BuildContext context) {
    return MaterialButton(
      color: buttonColor,
      onPressed: onPressed,
      child: Text(text,
          style: TextStyle(
            color: textColor,
            fontSize: 20.0,
          )),
    );
  }
}

Вы можете определить цвет своей кнопки, например, в ответе , приведенном выше / ниже .

0 голосов
/ 29 ноября 2018

Один из способов сделать это - определить buttonTheme в theme в MaterialApp:

Например:

void main() {
  runApp(MaterialApp(
    home: Home(),
    theme: ThemeData(
        accentColor: Colors.redAccent,
        buttonTheme: ButtonThemeData(
           buttonColor: Colors.blueAccent,
           shape: RoundedRectangleBorder(),
           textTheme: ButtonTextTheme.accent,
           ....
    )),
  ));
}

class Home extends StatelessWidget {
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
          title: Text("Button Theme"),
          backgroundColor: Colors.green),
      body: Center(
          child: RaisedButton( //Button Color is as define in theme
        onPressed: () {},
        child: Text("Send"), //Text Color as define in theme
      )),
    );
  }
}

с помощью всех кнопок, определенных в этом MaterialApp будет нести этот стиль темы.

Цвет текста будет accentColor определен в ThemeData, как я определил textTheme: ButtonTextTheme.accent, поэтому он выберет accentColor

Тема выбора кнопкиСтиль, определенный в theme

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...