无法为OutlineButton设置填充颜色

时间:2019-04-28 18:27:26

标签: dart flutter

OutlineButton的documentation表示color属性填充按钮的颜色,默认情况下是透明的。 Flutter文档特别提到了color属性:“ color→Color 当按钮处于默认(未按下,启用)状态时,按钮的填充颜色(由其材料显示)。“

但是设置color属性无效:

OutlineButton(
        color: Colors.orange,
        textColor: BmsColors.primaryForegroundColor,
        borderSide: BorderSide(color: BmsColors.primaryForegroundColor, width: 2.0),
        shape: new RoundedRectangleBorder(
          borderRadius:
              new BorderRadius.circular(8.0),
        ),
        child: Text(
          this.text,
          style: TextStyle(fontFamily: 'Lalezar', fontWeight: FontWeight.w400),
        ),
        onPressed: () {},
      );

enter image description here

3 个答案:

答案 0 :(得分:3)

如果检查$deleted = mysqli_affected_rows($con);的源代码,则有一种获取fillColor的方法

OutlineButton

但是此方法具有 Color _getFillColor() { if (widget.highlightElevation == null || widget.highlightElevation == 0.0) return Colors.transparent; final Color color = widget.color ?? Theme.of(context).canvasColor; final Tween<Color> colorTween = ColorTween( begin: color.withAlpha(0x00), end: color.withAlpha(0xFF), ); return colorTween.evaluate(_fillAnimation); } 条件,仅当ifcolor不同时才使用highlightElevation,并且还使用{{ 1}}从0colorTween

因此当您按下它时,它会从透明变为您的颜色。

如果需要,您可以创建自己的color.withAlpha(0x00)小部件,这是我制作的示例:

color.withAlpha(0xFF)

用法

OutlineButton

答案 1 :(得分:1)

对于您想要的内容,您可以将简单的 RaisedButton RoundedRectangleBorder 结合使用。参见例如:

Container(
            color: Colors.pink,
            child: RaisedButton(
              color: Colors.black,
              child: Text('Become a member', style: TextStyle(color: Colors.yellow)),
              onPressed: () {
                print('Hello');
              },
              shape: RoundedRectangleBorder(
                  borderRadius: BorderRadius.circular(10.0),
                  side: BorderSide(color: Colors.yellow, width: 5.0)),
            ),
          )

可以使用 BorderSide 指定边框颜色,填充的颜色只是RaisedButton的常规颜色属性。
希望有帮助。

答案 2 :(得分:0)

OutlineButton已被弃用,并已替换为OutlinedButton。 (注意“ d”。)

OutlinedButton的{​​{3}}帮助我了解如何使用它。这是这些状态的示例:禁用(灰色)->正常(蓝色)->按下(红色)

documentation

   return Container(
      width: double.infinity,
      height: 48,
      child: OutlinedButton(
        child: Text(
          "This is an Outline\"d\"Button. (Not OutlineButton)",
          style: TextStyle(color: Colors.white),
        ),
        onPressed: () => print("Tapped"),
        //onPressed: null, //Uncomment this statement to check disabled state.
        style: ButtonStyle(
          backgroundColor: MaterialStateProperty.resolveWith<Color>((states) {
            if (states.contains(MaterialState.disabled)) {
              return Colors.grey[100];
            }
            return Colors.blue;
          }),
          overlayColor: MaterialStateProperty.resolveWith<Color>((states) {
            if (states.contains(MaterialState.pressed)) {
              return Colors.red;
            }
            return Colors.transparent;
          }),
          side: MaterialStateProperty.resolveWith((states) {
            Color _borderColor;

            if (states.contains(MaterialState.disabled)) {
              _borderColor = Colors.greenAccent;
            } else if (states.contains(MaterialState.pressed)) {
              _borderColor = Colors.yellow;
            } else {
              _borderColor = Colors.pinkAccent;
            }

            return BorderSide(color: _borderColor, width: 5);
          }),
          shape: MaterialStateProperty.resolveWith<OutlinedBorder>((_) {
            return RoundedRectangleBorder(borderRadius: BorderRadius.circular(16));
          }),
        ),
      ),
    );

Flutter用新的按钮类型(FlatButtonRaisedButton和{{1}替换了以前的3种按钮类型(OutlineButtonTextButtonElevatedButton) })与Material Design保持同步,并且还因为使用OutlinedButton提供了最终的灵活性,可以实现所需的特定于状态的UI。您可以详细了解Outlined-Button-Disabled-Normal-Pressed