当前位置:   article > 正文

Flutter组件--按钮(Button)组件_flutter button

flutter button

1.按钮组件的属性

 

属性 

说明

onPressed

必填参数,按下按钮时触发的回调,接收一个方法,传null表示按钮禁用,会显示禁用相关样式

child

子组件

style

通过ButtonStyle装饰

ButtonStylee里面的常用的参数

属性名称

值类型 

属性值

foregroundColor

Color

文本颜色

backgroundColor

Color

按钮的颜色

shadowColor

Color

阴影颜色

splashColorColor渐没效果(单击的时候才会显示)

elevation

double

阴影的范围,值越大阴影范围越大

padding

内边距

shape

设置按钮的形状 shape: MaterialStateProperty.all(

RoundedRectangleBorder(

borderRadius: BorderRadius.circular(10))

),

设置成椭圆形

 shape:StaddiumBorder(),

side

设置边框

side: MaterialStateProperty.all(

BorderSide(width: 1,

color: Colors.red),

)

2.按钮的样式

2.1.ElevatedButton :"凸起"按钮,它默认带有阴影和灰色背景.按下后,阴影会变大;

2.2.TextButton :文本按钮,默认背景透明并不带阴影.按下后,会有背景色;

2.3.OutlineButton :默认有一个边框,不带阴影且背景透明.按下后,边框颜色会变亮、同时出现背景和阴影;

2.4.IconButton :是一个可点击的Icon,不包括文字,默认没有背景,点击后会出现背景;

2.5.RaiseButton:漂浮按钮,默认会有一个灰色的背景色,单击后会有水波纹效果.

2.6.FlatButton:扁平按钮.默认只有文字,没有背景色和边框(里面可以使用icon增加图标和label增加文字展示).

注意事项:

       默认情况下,按钮距离上边沿和下边沿是有一定间距的.materialTapTargetSize是一个枚举类型,可以进行有效的控制.

3.示例代码:

  1. class MyApp extends StatelessWidget {
  2. const MyApp({super.key});
  3. @override
  4. Widget build(BuildContext context) {
  5. return ListView(
  6. children: [
  7. Column(
  8. children: [
  9. /**
  10. * 普通按钮
  11. */
  12. ElevatedButton(
  13. onPressed: () {
  14. print("按钮的单击事件");
  15. },
  16. child: Text("普通按钮")),
  17. SizedBox(height: 5),
  18. /**
  19. * 文本按钮
  20. */
  21. TextButton(onPressed: () {}, child: Text("文本按钮")),
  22. SizedBox(height: 5),
  23. /**
  24. * 边框按钮
  25. */
  26. OutlinedButton(onPressed: null, child: Text("边框按钮")),
  27. SizedBox(height: 5),
  28. /**
  29. * icon按钮
  30. */
  31. IconButton(onPressed: null, icon: Icon(Icons.thumb_up)),
  32. /**
  33. * 带图标的普通按钮
  34. */
  35. SizedBox(height: 5),
  36. ElevatedButton.icon(
  37. onPressed: (){},
  38. icon: Icon(Icons.send),
  39. label: Text("带图标的普通按钮")),
  40. /**
  41. * 设置普通按钮的属性
  42. */
  43. SizedBox(height: 5),
  44. ElevatedButton(
  45. style: ButtonStyle(
  46. backgroundColor: MaterialStateProperty.all(Colors.yellow),//背景颜色
  47. foregroundColor: MaterialStateProperty.all(Colors.red),//文字颜色
  48. ),
  49. onPressed: (){},
  50. child: Text("设置相关属性")),
  51. /**
  52. * 修改按钮的高度和宽度有两种方法:
  53. * 方法一:
  54. * 在按钮的外面增加一个Container组件,然后通过设置Container组件的宽度和高度,进而到达控制按钮尺寸的效果
  55. *方法二:
  56. *在按钮的最外层包裹一层ButtonTheme控件,该控件里面含有minWidth和height属性
  57. */
  58. SizedBox(height: 5),
  59. Container(
  60. width: 400,
  61. height: 44,
  62. child: ElevatedButton(
  63. style: ButtonStyle(
  64. backgroundColor: MaterialStateProperty.all(Colors.purple),//背景颜色
  65. foregroundColor: MaterialStateProperty.all(Colors.red.shade200),//文字颜色
  66. shape: MaterialStateProperty.all(
  67. RoundedRectangleBorder(
  68. borderRadius: BorderRadius.circular(22),//设置圆角
  69. )
  70. )
  71. ),
  72. onPressed: (){},
  73. child: Text("设置按钮的宽度和高度")),
  74. ),
  75. SizedBox(height: 5),
  76. Container(
  77. width: 100,
  78. height: 100,
  79. child: ElevatedButton(
  80. style:ButtonStyle(
  81. shape: MaterialStateProperty.all(
  82. CircleBorder(side: BorderSide(color:Colors.yellow))//按钮边框的颜色
  83. )
  84. ) ,
  85. onPressed: (){},
  86. child: Text("圆形按钮")) ,
  87. ),
  88. SizedBox(height: 5),
  89. /**
  90. * 修改边框颜色
  91. */
  92. OutlinedButton(onPressed: (){},
  93. child: Text("修改边框颜色"),
  94. style: ButtonStyle(
  95. side: MaterialStateProperty.all(
  96. BorderSide(width: 1,
  97. color: Colors.red),
  98. )
  99. ),)
  100. ],
  101. )
  102. ],
  103. );
  104. }
  105. }

4. 下拉按钮进行选择

  1. class BoxStyleDemo extends StatefulWidget {
  2. const BoxStyleDemo({super.key});
  3. @override
  4. State<BoxStyleDemo> createState() => _BoxStyleDemoState();
  5. }
  6. class _BoxStyleDemoState extends State<BoxStyleDemo> {
  7. var selectValue;
  8. @override
  9. Widget build(BuildContext context) {
  10. return Container(
  11. child: DropdownButton(
  12. items: [
  13. DropdownMenuItem(
  14. child: Text('男'),
  15. value: 0,
  16. ),
  17. DropdownMenuItem(
  18. child: Text('女'),
  19. value: 1,
  20. ),
  21. ],
  22. onChanged: (value) {
  23. setState(() {
  24. selectValue = value;
  25. });
  26. },
  27. value: selectValue,
  28. hint: Text("请选择性别"),
  29. ),
  30. );
  31. }
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/302610
推荐阅读
相关标签
  

闽ICP备14008679号