当前位置: 首页 > news >正文

flutter图标按钮_【Flutter 1-17】Flutter手把手教程UI控件——【多图预警】按钮详解...

作者 | 弗拉德

来源 | 弗拉德(公众号:fulade_me)

Material 风格中常用的按钮有三种RaiseButton、FlatButton、OutlineButton。

这三种按钮都是继承了MaterialButton,而MaterialButton又继承自StatelessWidget。

RaiseButton:带有阴影效果的按钮,默认带有灰色背景,点击下去会有点击效果和阴影。

FlatButton: 扁平风格按钮,点击下去会有背景颜色。

OutlineButton: 带有边框的按钮,且边框会在点击时改变颜色。

1. RaisedButton

我们先来看RaisedButton的构造方法const RaisedButton({

Key key,

/// 点击后的回调方法

@required VoidCallback onPressed,

/// 长按后的回调方法

VoidCallback onLongPress,

/// 高亮时候的回调方法

ValueChanged onHighlightChanged,

/// 鼠标指针的光标进入或悬停在此按钮(这个用于Web端或PC端)

MouseCursor mouseCursor,

/// 文本的主题,这个跟MaterialApp的属性theme有关

ButtonTextTheme textTheme,

/// 文本颜色

Color textColor,

/// 不可点击时的文本颜色

Color disabledTextColor,

/// 背景颜色

Color color,

/// 可点击时的背景颜色

Color disabledColor,

/// 获取焦点时的颜色(用于Web端或PC端)

Color focusColor,

/// 指鼠标悬停时的颜色(用于Web端或PC端)

Color hoverColor,

/// 高亮时的颜色

Color highlightColor,

/// 水波纹颜色,按下松开会有水波纹效果

Color splashColor,

/// 按钮主题颜色,默认浅色

Brightness colorBrightness,

/// 默认时的 阴影大小

double elevation,

/// 选中时的 阴影大小

double focusElevation,

/// 指鼠标悬停时的阴影大小

double hoverElevation,

/// 高亮时的阴影大小

double highlightElevation,

/// 不可选中时的阴影大小

double disabledElevation,

/// 内边距 跟布局有关

EdgeInsetsGeometry padding,

VisualDensity visualDensity,

/// 设置按钮的形状

ShapeBorder shape,

/// 切边的样式

Clip clipBehavior = Clip.none,

FocusNode focusNode,

bool autofocus = false,

MaterialTapTargetSize materialTapTargetSize,

/// 动画的时间

Duration animationDuration,

/// 子控件

Widget child,

})

1.1 一个最简单的RaisedButtonRaisedButton(

child: Text("RaisedButton"),

onPressed: () {},

);

效果:

1.2 不可点击状态RaisedButton(

child: Text("不设置onPressed"),

disabledColor: Colors.blue,

disabledTextColor: Colors.red,

);

如果不设置onPressed参数,默认是不可点击的,当然我们依然可以设置不可点击时候的文字颜色和背景颜色。需要注意onPressed是@required参数,不建议不传此参数。

1.3 文本颜色RaisedButton(

child: Text("textColor红色"),

textColor: Colors.red,

onPressed: () {},

);

textColor可以设置文字的颜色。

1.4 设置形状RaisedButton(

onPressed: () {},

child: Text("椭圆形"),

shape: StadiumBorder(),

);

通过shape参数可以设置按钮的形状,常见的形状有RoundedRectangleBorder矩形、CircleBorder圆形、StadiumBorder椭圆形、BeveledRectangleBorder八边形。

1.5 背景颜色RaisedButton(

child: Text("背景颜色"),

color: Colors.red,

onPressed: () {},

);

通过传入color可以设置按钮的背景颜色。

1.6 高亮颜色RaisedButton(

onPressed: () {},

child: Text("高亮红色"),

highlightColor: Colors.red,

);

传入highlightColor参数来设置选中时候的颜色。

1.7 水波纹红色RaisedButton(

onPressed: () {},

child: Text("水波纹红色"),

splashColor: Colors.red,

);

splashColor可以帮助我们设置点击后的水波纹颜色。

1.8 高亮回调RaisedButton(

child: Text("高亮变化回调"),

onPressed: () {},

onHighlightChanged: (value) {

print("高亮切换");

},

);

onHighlightChanged可以接收一个回调方法,当按钮被按下并高亮的时候会回调该方法。

1.9 长按回调RaisedButton(

child: Text("长按回调"),

onPressed: () {},

onLongPress: () {

print("长按回调");

},

);

onLongPress可以接收一个长按回调方法,当按钮被长按的时候会回调该方法。

1.10 设置阴影的大小RaisedButton(

child: Text("阴影设置20"),

onPressed: () {},

elevation: 20.0,

);

elevation参数可以设置阴影的大小,默认的阴影比较小,可以通过此参数设置更大的阴影大小。

想体验以上代码运行效果,可以到我的Github仓库项目flutter_app->lib->routes->flat_button_page.dart,可以下载下来运行并体验。

2. FlatButton

FlatButton的构造函数参数跟RaisedButton参数基本一致,设置方式也是一样的。const FlatButton({

Key key,

/// 点击后的回调

@required VoidCallback onPressed,

/// 长按后的回调

VoidCallback onLongPress,

/// 点击 高亮后的回调

ValueChanged onHighlightChanged,

/// 鼠标指针的光标进入或悬停在此按钮(这个用于Web端或PC端)

MouseCursor mouseCursor,

/// 文本的主题,这个跟MaterialApp的属性theme有关

ButtonTextTheme textTheme,

/// 文字颜色

Color textColor,

/// 不可点击时的文本颜色

Color disabledTextColor,

/// 背景颜色

Color color,

/// 不可点击时的背景颜色

Color disabledColor,

/// 获取焦点时的颜色(用于Web端或PC端)

Color focusColor,

/// 指鼠标悬停时的颜色(用于Web端或PC端)

Color hoverColor,

/// 高亮时的颜色

Color highlightColor,

/// 水波纹颜色,按下松开会有水波纹效果

Color splashColor,

/// 按钮主题颜色,默认浅色

Brightness colorBrightness,

/// 内边距 跟布局有关

EdgeInsetsGeometry padding,

VisualDensity visualDensity,

/// 按钮的形状

ShapeBorder shape,

/// 切边的样式

Clip clipBehavior = Clip.none,

FocusNode focusNode,

bool autofocus = false,

MaterialTapTargetSize materialTapTargetSize,

/// 子控件

@required Widget child,

})

2.1 一个最简单的FlatButtonFlatButton(

child: Text("FlatButton"),

onPressed: () {},

);

我们可以看到相对比于RaisedButton,FlatButton默认扁平化风格的。

2.2 设置形状FlatButton(

onPressed: () {},

child: Text("椭圆形"),

shape: StadiumBorder(),

);

通过传入shape参数可设置FlatButton的形状。需要注意的是:设置好的形状,只有当点击下去的时候才可以看到效果。

其他的 不可点击状态、文本颜色、背景颜色、高亮颜色、水波纹红色、高亮回调、长按回调等状态的设置代码跟RaisedButton的设置方式一样。

想体验FlatButton的运行效果,可以到我的Github仓库项目flutter_app->lib->routes->flat_button_page.dart,可以下载下来运行并体验。

3. OutlineButton

我们来看OutlineButton的构造函数const OutlineButton({

Key key,

/// 点击后的回调

@required VoidCallback onPressed,

/// 长按后的回调

VoidCallback onLongPress,

/// 鼠标指针的光标进入或悬停在此按钮(这个用于Web端或PC端)

MouseCursor mouseCursor,

/// 文本的主题,这个跟MaterialApp的属性theme有关

ButtonTextTheme textTheme,

/// 文字颜色

Color textColor,

/// 不可点击时的文本颜色

Color disabledTextColor,

/// 背景颜色

Color color,

/// 获取焦点时的颜色(用于Web端或PC端)

Color focusColor,

/// 指鼠标悬停时的颜色(用于Web端或PC端)

Color hoverColor,

/// 高亮时的颜色

Color highlightColor,

/// 水波纹颜色,按下松开会有水波纹效果

Color splashColor,

/// 高亮时的阴影大小

double highlightElevation,

/// 边框的延时

this.borderSide,

/// 不可用时 边框的颜色

this.disabledBorderColor,

/// 选中时边框的样色

this.highlightedBorderColor,

/// 内边距 跟布局有关

EdgeInsetsGeometry padding,

VisualDensity visualDensity,

/// 按钮的形状

ShapeBorder shape,

/// 切边的样式

Clip clipBehavior = Clip.none,

FocusNode focusNode,

bool autofocus = false,

/// 子控件

Widget child,

})

3.1 简单的 OutlineButtonOutlineButton(

onPressed: () {},

child: Text("OutlineButton"),

);

它的边框默认是灰色的,点击选中的时候会变为蓝色。

3.2 Border的样式OutlineButton(

child: Text("Border颜色"),

borderSide: BorderSide(color: Colors.red, width: 2),

highlightColor: Colors.yellow,

highlightedBorderColor: Colors.green,

onPressed: () {},

);

borderSide可以接收一个BorderSide的对象,该对象可以设置颜色和宽度,同样我们也可以通过设置highlightColor和highlightedBorderColor来设置选中的背景颜色和选中的边框颜色。

其他的 不可点击状态、文本颜色、高亮颜色、水波纹红色、高亮回调、长按回调等状态的设置代码跟RaisedButton的设置方式一样。

想体验FlatButton的运行效果,可以到我的Github仓库项目flutter_app->lib->routes->outline_button_page.dart,可以下载下来运行并体验。

4. IconButton

4.1 简单的IconButtonIconButton(

icon: Icon(Icons.local_taxi),

onPressed: () {},

);

IconButton可以接收一个Icon类的的参数,Flutter自带了很多Icon详情可见这里

4.1 带有选中提示的IconButtonIconButton(

icon: Icon(Icons.local_cafe),

tooltip: "Cafe Button",

color: Colors.red,

onPressed: () {},

);

通过设置tooltip属性,可以设置按钮按下的弹出提示文字。我们这里设置了Cafe Button的文字。

4.2 自定义图片的IconButtonIconButton(

icon: Image.asset("images/flutter_icon_100.png"),

onPressed: () {},

);

我们同样可以提供一个Image类型的Icon,这样就满足我们设置不同的图片按钮。

如下图:

想体验IconButton的运行效果,可以到我的Github仓库项目flutter_app->lib->routes->icon_button_page.dart,可以下载下来运行并体验。

以上就是Material风格的按钮以及详解,如果你想了解Cupertino风格按钮,可以点击这里。

我们日常开发中大多数情况下都会使用Material风格的样式。

相关文章:

  • acl在内核里的位置_Linux2.6内核 ACL 机制数据结构和实现分析
  • WebService与共享COOKIE
  • score函数 机器学习_深度研究:回归模型评价指标R2_score
  • 国际运营商ICT服务发展现状及策略分析
  • bash 将二进制转换为十进制_bash shell实现二进制与十进制数的互转
  • 实体类多层嵌套 遍历_循环运用(多级嵌套结构)
  • 流程设计和优化原则
  • react做h5 例子_【React入门实例(运行于浏览器duan)】
  • XP中用U盘扩充内存
  • 301跳转 https_nginx配置https301跳转
  • php 创建64位的数_使用PHP应用查询SAP HANA Express Edition里的数据
  • 惠普电脑u盘重装系统步骤_惠普U盘重装,惠普电脑U盘一键重装系统方法
  • SQL Server 2005中的SQLCMD工具使用
  • 统计占比_统计局:2019年高等教育在校生中女研究生占比过半
  • 我的个人2007-非工作盘点
  •  D - 粉碎叛乱F - 其他起义
  • Docker下部署自己的LNMP工作环境
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • java多线程
  • js ES6 求数组的交集,并集,还有差集
  • JS+CSS实现数字滚动
  • mysql中InnoDB引擎中页的概念
  • php面试题 汇集2
  • Python 反序列化安全问题(二)
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SwizzleMethod 黑魔法
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 给新手的新浪微博 SDK 集成教程【一】
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 云大使推广中的常见热门问题
  • 中文输入法与React文本输入框的问题与解决方案
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • hi-nginx-1.3.4编译安装
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #include<初见C语言之指针(5)>
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转) 深度模型优化性能 调参
  • (转)jdk与jre的区别
  • (转)Linq学习笔记
  • (转)负载均衡,回话保持,cookie
  • .Net 6.0 处理跨域的方式
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .NET开发者必备的11款免费工具
  • .NET开源项目介绍及资源推荐:数据持久层
  • .Net语言中的StringBuilder:入门到精通
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?