Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton、FlatButton、

IconButton、OutlineButton、ButtonBar、FloatingActionButton 等。

RaisedButton :凸起的按钮,其实就是 Material Design 风格的 Button FlatButton :扁平化的按钮
OutlineButton:线框按钮
IconButton :图标按钮

ButtonBar:按钮组
FloatingActionButton:浮动按钮


Flutter 按钮组件中的一些属性

属性名称

值类型

属性值

onPressed

VoidCallback ,一般接收一个 方法

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

child

Widget

文本控件

textColor

Color

文本颜色

color

Color

按钮的颜色

  1. disabledColor

Color

按钮禁用时的颜色

  1. disabledTextColor

Color

按钮禁用时的文本颜色

splashColor

Color

点击按钮时水波纹的颜色

  1. highlightColor

Color

  1. 点击(长按)按钮后按钮的颜色

elevation

double

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

padding

 

内边距

shape

 

设置按钮的形状

shape: RoundedRectangleBorder(

  1. borderRadius:
  2. BorderRadius.circular(10),
  3. )
  1. shape: CircleBorder(
  2. side: BorderSide(
  1. color: Colors.white,
  2. )

)

  1. import 'package:flutter/material.dart';
  2.  
  3. class ButtonDemoPage extends StatelessWidget {
  4. const ButtonDemoPage({Key key}) : super(key: key);
  5.  
  6. @override
  7. Widget build(BuildContext context) {
  8. return Scaffold(
  9. appBar: AppBar(
  10. title: Text("按钮演示页面"),
  11. actions: <Widget>[
  12. IconButton(
  13. icon: Icon(Icons.settings),
  14. onPressed: (){
  15.  
  16. },
  17. )
  18. ],
  19. ),
  20. body: Column(
  21. mainAxisAlignment: MainAxisAlignment.center,
  22. children: <Widget>[
  23. Row(
  24. mainAxisAlignment: MainAxisAlignment.center,
  25. children: <Widget>[
  26. RaisedButton(
  27. child: Text('普通按钮'),
  28. onPressed: () {
  29. print("普通按钮");
  30. },
  31. ),
  32. SizedBox(width: 5),
  33. RaisedButton(
  34. child: Text('颜色按钮'),
  35. color: Colors.blue,
  36. textColor: Colors.white,
  37. onPressed: () {
  38. print("有颜色按钮");
  39. },
  40. ),
  41. SizedBox(width: 5),
  42. RaisedButton(
  43. child: Text('阴影按钮'),
  44. color: Colors.blue,
  45. textColor: Colors.white,
  46. elevation: 20,
  47. onPressed: () {
  48. print("有阴影按钮");
  49. },
  50. ),
  51. SizedBox(width: 5),
  52. RaisedButton.icon(
  53. icon: Icon(Icons.search),
  54. label: Text('图标按钮'),
  55. color: Colors.blue,
  56. textColor: Colors.white,
  57. // onPressed: null,
  58. onPressed: () {
  59. print("图标按钮");
  60. })
  61. ],
  62. ),
  63. SizedBox(height: 10),
  64. Row(
  65. mainAxisAlignment: MainAxisAlignment.center,
  66. children: <Widget>[
  67. Container(
  68. height: 50,
  69. width: 400,
  70. child: RaisedButton(
  71. child: Text('宽度高度'),
  72. color: Colors.blue,
  73. textColor: Colors.white,
  74. elevation: 20,
  75. onPressed: () {
  76. print("宽度高度");
  77. },
  78. ),
  79. )
  80. ],
  81. ),
  82. SizedBox(height: 10),
  83. Row(
  84. mainAxisAlignment: MainAxisAlignment.center,
  85. children: <Widget>[
  86. Expanded(
  87. child: Container(
  88. height: 60,
  89. margin: EdgeInsets.all(10),
  90. child: RaisedButton(
  91. child: Text('自适应按钮'),
  92. color: Colors.blue,
  93. textColor: Colors.white,
  94. elevation: 20,
  95. onPressed: () {
  96. print("自适应按钮");
  97. },
  98. ),
  99. ),
  100. )
  101. ],
  102. ),
  103. SizedBox(height: 10),
  104. Row(
  105. mainAxisAlignment: MainAxisAlignment.center,
  106. children: <Widget>[
  107. RaisedButton(
  108. child: Text('圆角按钮'),
  109. color: Colors.blue,
  110. textColor: Colors.white,
  111. elevation: 20,
  112. shape: RoundedRectangleBorder(
  113. borderRadius: BorderRadius.circular(10)),
  114. onPressed: () {
  115. print("圆角按钮");
  116. }),
  117. Container(
  118. height: 80,
  119. child: RaisedButton(
  120. child: Text('圆形按钮'),
  121. color: Colors.blue,
  122. textColor: Colors.white,
  123. elevation: 20,
  124. splashColor: Colors.red,
  125. shape:
  126. CircleBorder(side: BorderSide(color: Colors.white)),
  127. onPressed: () {
  128. print("圆形按钮");
  129. }),
  130. ),
  131. FlatButton(
  132. child: Text("按钮"),
  133. color: Colors.blue,
  134. textColor: Colors.yellow,
  135. onPressed: () {
  136. print('FlatButton');
  137. },
  138. ),
  139. SizedBox(width: 10),
  140. OutlineButton(
  141. child: Text("按钮"),
  142. // color: Colors.red, //没有效果
  143. // textColor: Colors.yellow,
  144. onPressed: () {
  145. print('FlatButton');
  146. })
  147. ],
  148. ),
  149. SizedBox(height: 10),
  150. Row(
  151. mainAxisAlignment: MainAxisAlignment.center,
  152. children: <Widget>[
  153. Expanded(
  154. child: Container(
  155. margin: EdgeInsets.all(20),
  156. height: 50,
  157. child: OutlineButton(child: Text("注册"), onPressed: () {}),
  158. ),
  159. )
  160. ],
  161. ),
  162. Row(
  163. mainAxisAlignment: MainAxisAlignment.end,
  164. children: <Widget>[
  165. ButtonBar(
  166. children: <Widget>[
  167.  
  168. RaisedButton(
  169. child: Text('登录'),
  170. color: Colors.blue,
  171. textColor: Colors.white,
  172. elevation: 20,
  173. onPressed: () {
  174. print("宽度高度");
  175. },
  176. ),
  177. RaisedButton(
  178. child: Text('注册'),
  179. color: Colors.blue,
  180. textColor: Colors.white,
  181. elevation: 20,
  182. onPressed: () {
  183. print("宽度高度");
  184. },
  185. ),
  186. MyButton(text: "自定义按钮",height: 60.0,width: 100.0,pressed: (){
  187. print('自定义按钮');
  188. })
  189.  
  190. ],
  191. )
  192. ],
  193. )
  194. ],
  195. ));
  196. }
  197. }
  198.  
  199. //自定义按钮组件
  200.  
  201. class MyButton extends StatelessWidget {
  202. final text;
  203. final pressed;
  204. final width;
  205. final height;
  206. const MyButton({this.text='',this.pressed=null,this.width=80,this.height=30}) ;
  207.  
  208. @override
  209. Widget build(BuildContext context) {
  210. return Container(
  211. height: this.height,
  212. width: this.width,
  213. child: RaisedButton(
  214. child: Text(this.text),
  215. onPressed:this.pressed ,
  216. ),
  217. );
  218. }
  219. }

Flutter 中的常见的按钮组件 以及自定义按钮组件的更多相关文章

  1. 22Flutter中的常见的按钮组件 以及自定义按钮组件

    /* Flutter中的常见的按钮组件 以及自定义按钮组件 一.Flutter中的按钮组件介绍 Flutter里有很多的Button组件,常见的按钮组件有:RaisedButton/FlatButto ...

  2. echarts 显示下载按钮,echarts 自定义按钮,echarts 添加按钮

    echarts 显示下载按钮,echarts 自定义按钮,echarts 添加按钮 >>>>>>>>>>>>>>&g ...

  3. #003 React 组件 继承 自定义的组件

    主题:React组件 继承 自定义的 组件 一.需求说明 情况说明: 有A,B,C,D 四个组件,里面都有一些公用的逻辑,比如 设置数据,获取数据,有某些公用的的属性,不想在 每一个 组件里面写这些属 ...

  4. Flutter 中的常见的按钮组件 以及自 定义按钮组件

    一.Flutter 中的按钮组件介绍   Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton.FlatButton.   IconButton.Outlin ...

  5. Flutter中的普通路由与命名路由(Navigator组件)

    Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航.并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...

  6. Flutter中的日期、格式化日期、日期选择器组件

    Flutter中的日期和时间戳 //獲取當前日期 DateTime _nowDate = DateTime.now(); print(_nowDate);//2019-10-29 10:57:20.3 ...

  7. MIP组件开发 自定义js组件开发步骤

    什么是百度MIP? MIP(Mobile Instant Pages - 移动网页加速器)主要用于移动端页面加速 官网参考:https://www.mipengine.org/doc/00-mip-1 ...

  8. flutter中的按钮组件

    Flutter 里有很多的 Button 组件很多,常见的按钮组件有:RaisedButton.FlatButton.IconButton.OutlineButton.ButtonBar.Floati ...

  9. Flutter 中的路由

    Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航. 并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.po ...

随机推荐

  1. python使用二分法实现在一个有序列表中查找指定的元素

    二分法是一种快速查找的方法,时间复杂度低,逻辑简单易懂,总的来说就是不断的除以2除以2... 例如需要查找有序list里面的某个关键字key的位置,那么首先确认list的中位数mid,下面分为三种情况 ...

  2. python_并发编程——多进程

    from multiprocessing import Process import os def func1(): print('子进程1',os.getpid()) #子进程:获取当前进程的进程号 ...

  3. hbase实践之协处理器Coprocessor

    HBase客户端查询存在的问题 Scan 用Get/Scan查询数据, Filter 用Filter查询特定数据 以上情况只适合几千行数据以及不是很多的列的"小数据". 当表扩展为 ...

  4. 查看mysql日志文件

    开启mysql日志 /etc/mysql/mysql.conf.d/mysqld.cnf sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 找到第68,69行 前面 ...

  5. java发送邮件javamail, freemarker读取html模板内容

    https://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件 ...

  6. LightOJ - 1170 - Counting Perfect BST(卡特兰数)

    链接: https://vjudge.net/problem/LightOJ-1170 题意: BST is the acronym for Binary Search Tree. A BST is ...

  7. Hbase节点及原理

    1.Hbase架构:Clinet.Zookeeper.Master.RegionServer.Region.Store.MemStore.HLog 1.读过程 2.写过程 https://www.cn ...

  8. Longest Continuous Increasing Subsequence II

    Description Given an integer matrix. Find the longest increasing continuous subsequence in this matr ...

  9. MySQL 实现 Oracle row_number over 数据排序功能

    一.方法一GROUP_CONCAT.SUBSTRING_INDEX 1.GROUP_CONCAT 2.SUBSTRING_INDEX 3.例子 首先我们可以首先根据job_id 排序然后根据start ...

  10. am335x system upgrade rootfs for dhcpcd cross compile(十三)

    dhcpcd移植 [目的] 移植dhcpcd的目是在AM335X开发板上使用dhcp功能,获取WAN口设备的IP,并且可以通过参数指定其matric,matric值越小,其优先级越高.如设备可以以太网 ...