一尘不染

如何在MaterialButton或RaisedButton上应用主题?

flutter

有人可以帮助指出我们如何为按钮定义基本主题并将其用于每个按钮吗?我到处都只发现textTheme但没有buttonTheme示例?

甚至buttonTheme我们如何定义文本颜色?因为在按钮本身上,我们可以直接像color: Colors.blue


阅读 314

收藏
2020-08-13

共1个答案

一尘不染

做到这一点的方法之一是定义buttonThemethemeMaterialApp

例如:

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

2020-08-13