这是一篇关于 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/