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: () {},
);
答案 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);
}
条件,仅当if
与color
不同时才使用highlightElevation
,并且还使用{{ 1}}从0
到colorTween
。
因此当您按下它时,它会从透明变为您的颜色。
如果需要,您可以创建自己的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}}帮助我了解如何使用它。这是这些状态的示例:禁用(灰色)->正常(蓝色)->按下(红色)
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用新的按钮类型(FlatButton
,RaisedButton
和{{1}替换了以前的3种按钮类型(OutlineButton
,TextButton
和ElevatedButton
) })与Material Design保持同步,并且还因为使用OutlinedButton
提供了最终的灵活性,可以实现所需的特定于状态的UI。您可以详细了解。