属性 |
说明 |
onPressed |
必填参数,按下按钮时触发的回调,接收一个方法,传null表示按钮禁用,会显示禁用相关样式 |
child |
子组件 |
style |
通过ButtonStyle装饰 |
属性名称 |
值类型 |
属性值 |
foregroundColor |
Color |
文本颜色 |
backgroundColor |
Color |
按钮的颜色 |
shadowColor |
Color |
阴影颜色 |
splashColor | Color | 渐没效果(单击的时候才会显示) |
elevation |
double |
阴影的范围,值越大阴影范围越大 |
padding |
内边距 |
|
shape |
设置按钮的形状 shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(10)) ), 设置成椭圆形 shape:StaddiumBorder(), |
|
side |
设置边框 | side: MaterialStateProperty.all( BorderSide(width: 1, color: Colors.red), ) |
注意事项:
默认情况下,按钮距离上边沿和下边沿是有一定间距的.materialTapTargetSize是一个枚举类型,可以进行有效的控制.
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return ListView(
children: [
Column(
children: [
/**
* 普通按钮
*/
ElevatedButton(
onPressed: () {
print("按钮的单击事件");
},
child: Text("普通按钮")),
SizedBox(height: 5),
/**
* 文本按钮
*/
TextButton(onPressed: () {}, child: Text("文本按钮")),
SizedBox(height: 5),
/**
* 边框按钮
*/
OutlinedButton(onPressed: null, child: Text("边框按钮")),
SizedBox(height: 5),
/**
* icon按钮
*/
IconButton(onPressed: null, icon: Icon(Icons.thumb_up)),
/**
* 带图标的普通按钮
*/
SizedBox(height: 5),
ElevatedButton.icon(
onPressed: (){},
icon: Icon(Icons.send),
label: Text("带图标的普通按钮")),
/**
* 设置普通按钮的属性
*/
SizedBox(height: 5),
ElevatedButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.yellow),//背景颜色
foregroundColor: MaterialStateProperty.all(Colors.red),//文字颜色
),
onPressed: (){},
child: Text("设置相关属性")),
/**
* 修改按钮的高度和宽度有两种方法:
* 方法一:
* 在按钮的外面增加一个Container组件,然后通过设置Container组件的宽度和高度,进而到达控制按钮尺寸的效果
*方法二:
*在按钮的最外层包裹一层ButtonTheme控件,该控件里面含有minWidth和height属性
*/
SizedBox(height: 5),
Container(
width: 400,
height: 44,
child: ElevatedButton(
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.purple),//背景颜色
foregroundColor: MaterialStateProperty.all(Colors.red.shade200),//文字颜色
shape: MaterialStateProperty.all(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(22),//设置圆角
)
)
),
onPressed: (){},
child: Text("设置按钮的宽度和高度")),
),
SizedBox(height: 5),
Container(
width: 100,
height: 100,
child: ElevatedButton(
style:ButtonStyle(
shape: MaterialStateProperty.all(
CircleBorder(side: BorderSide(color:Colors.yellow))//按钮边框的颜色
)
) ,
onPressed: (){},
child: Text("圆形按钮")) ,
),
SizedBox(height: 5),
/**
* 修改边框颜色
*/
OutlinedButton(onPressed: (){},
child: Text("修改边框颜色"),
style: ButtonStyle(
side: MaterialStateProperty.all(
BorderSide(width: 1,
color: Colors.red),
)
),)
],
)
],
);
}
}
class BoxStyleDemo extends StatefulWidget {
const BoxStyleDemo({super.key});
@override
State createState() => _BoxStyleDemoState();
}
class _BoxStyleDemoState extends State {
var selectValue;
@override
Widget build(BuildContext context) {
return Container(
child: DropdownButton(
items: [
DropdownMenuItem(
child: Text('男'),
value: 0,
),
DropdownMenuItem(
child: Text('女'),
value: 1,
),
],
onChanged: (value) {
setState(() {
selectValue = value;
});
},
value: selectValue,
hint: Text("请选择性别"),
),
);
}
}