Flutter TextButton 和 OutlinedButton 属性设置和参数样式

这是一篇关于 Flutter OutlinedButton 属性的笔记。

///设置点击事件
onPressed: () => {},

接着是重点,设置文本内容和样式

///按钮文本内容,
child: Text("确认", ),

可以给 Text 设置 TextStyle ,但这里的颜色和字体大小是一次性的,不能随着按钮的按压状态而改变。所以如果你没根据状态改变文本颜色的需求,直接用 TextStyle 设置颜色就行了。

但如果要根据状态改变文本颜色,需要设置按钮的样式。但这两个颜色是冲突的,而且以 TextStyle 优先,这里要注意,如果设置 TextStyle 颜色, 会出现 foregroundColor 不生效的情况。

style: ButtonStyle(
	///设置文本不通状态时颜色
  foregroundColor: MaterialStateProperty.resolveWith(
        (states) {
      if (states.contains(MaterialState.focused) &&
          !states.contains(MaterialState.pressed)) {
        //获取焦点时的颜色
        return Colors.blue;
      } else if (states.contains(MaterialState.pressed)) {
        //按下时的颜色
        return Colors.deepPurple;
      }
      //默认状态使用灰色
      return Colors.grey;
    },
  ),
  //按钮背景颜色
  backgroundColor: MaterialStateProperty.resolveWith((states) {
    //设置按下时的背景颜色
    if (states.contains(MaterialState.pressed)) {
      return Colors.yellow[300];
    }
    //默认不使用背景颜色
    return null;
  }),
  ///设置水波纹颜色
  overlayColor: MaterialStateProperty.all(Colors.yellow),
  ///按钮大小
  minimumSize: MaterialStateProperty.all(Size(320, 36)),
  ///设置按钮圆角
  shape: MaterialStateProperty.all(RoundedRectangleBorder(
      borderRadius: BorderRadius.circular(5))),
  ///设置按钮边框颜色和宽度                
  side: MaterialStateProperty.all(
      BorderSide(color: ColorStyle.color_4A6081, width: 1)),
),

上面的圆角是全圆角,如果想为某个方向单独设置圆角,用下面方法

  ///设置按钮单独方向圆角
  shape: MaterialStateProperty.all(RoundedRectangleBorder(
                  borderRadius: BorderRadius.only(topLeft: Radius.circular(5),topRight: Radius.circular(5)))),

行,基本就这样,本来只想放到笔记自己看,因为部分关于文本状态的设置有参考 Flutter TextButton 详细使用配置、Flutter ButtonStyle样式概述实践 ,但除开这里,这里还是有些值得分享的,应该能帮到一些有需要的人。

本文由老郭种树原创,转载请注明:https://guozh.net/flutter-button-style-setting/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注