Flutter中可能具有不同的Button样式?

时间:2019-01-24 18:22:30

标签: flutter flutter-layout

我有几个OutlineButton,并且我希望能够有多种样式(深色,浅色,小号等)。

我可以创建一个ButtonTheme,但是如何为按钮指定主题或样式,因为它们不接受任何一个参数?

ie:我希望以下两个按钮具有不同的背景颜色:

children: {
     OutlineButton(color: Colors.black, child: Text("Hello")), 
     OutlineButton(child:Text("GoodBye"))
 }

(由于使用“应用主题”按钮的背景,因此颜色字段被忽略了)

编辑:示例代码:

Widget button(BuildContext context, String icon, String title, [Color backgroundColor = Colors.white, Color textColor = Colors.black] ) {
  return Padding(
    padding: const EdgeInsets.only(bottom: 15),
    child: Row(
      children: <Widget>[
        new Expanded(
            child: new OutlineButton(
                key: null,
                shape: RoundedRectangleBorder(),
                borderSide: new BorderSide(color: const Color(0xff666666)),
                highlightedBorderColor: Color(0xFF303030),
                color: backgroundColor,
                onPressed: buttonPressed,
                child: Row(
                  children: <Widget>[
                    icon == null ? Container(width: 0, height: 0) :
                    new IconButton(
                      icon: Image.asset(icon),
                      iconSize: 32.0,
                      onPressed: () {                       
                      },
                    ),

                    new Expanded(
                      child: new Text(
                        title,
                        textAlign: TextAlign.center,
                        style: Theme.of(context).primaryTextTheme.button.copyWith(color: textColor)

                      ),
                    ),
                  ],
                ))),
      ],
    ),
  );
}

void buttonPressed() {}

例如,我这样称呼它:

children: {button(null, "Hello", Colors.black, Colors.white), button(null, "Goodbye", Colors.white, Colors.black)}

1 个答案:

答案 0 :(得分:0)

您可以使用将buttonTheme添加到ThemeData,然后使用 colorSchema 属性在小部件中定义颜色(您拥有30种可自定义的颜色)像这样:

RaisedButton(color: Theme.of(context).buttonTheme.colorScheme.primary)