前言

Material组件库中提供了多种按钮组件如RaisedButton、FlatButton、OutlineButton等,它们都是直接或间接对RawMaterialButton组件的包装定制,所以他们大多数属性都和RawMaterialButton一样。

有Material 库中的按钮都有如下相同点

  1. 按下时都会有“水波动画”(又称“涟漪动画”,就是点击时按钮上会出现水波荡漾的动画)。
  2. 有一个onPressed属性来设置点击回调,当按钮按下时会执行该回调,如果不提供该回调则按钮会处于禁用状态,禁用状态不响应用户点击。

实例

  1. // 按钮
  2. import 'package:flutter/material.dart';
  3. // ignore: must_be_immutable
  4. class Buttons extends StatelessWidget {
  5. bool _active = false;
  6. Widget build(BuildContext context) {
  7. return Scaffold(
  8. appBar: AppBar(
  9. title: Text('Buttons'),
  10. ),
  11. body: Container(
  12. child: Column(
  13. children: <Widget>[
  14. // RaisedButton,即"漂浮"按钮,默认带有阴影和灰色背景。按下后,阴影会变大。
  15. RaisedButton(
  16. child: Text(_active ? 'active' : 'normal'),
  17. onPressed: () {
  18. _active = !_active;
  19. print('RaisedButton按下!');
  20. },
  21. ),
  22. // FlatButton,即扁平按钮,默认背景透明并不带阴影。按下后,会有背景色。
  23. FlatButton(
  24. child: Text(_active ? 'active' : 'normal'),
  25. onPressed: () {
  26. _active = !_active;
  27. print('FlatButton按下!');
  28. },
  29. ),
  30. // OutlineButton,默认有一个边框,不带阴影且背景透明。按下后,边框颜色会变亮、同时出现背景和阴影(较弱)。
  31. OutlineButton(
  32. child: Text(_active ? 'active' : 'normal'),
  33. onPressed: () {
  34. _active = !_active;
  35. print('OutlineButton按下!');
  36. },
  37. ),
  38. // IconButton,是一个可点击的Icon,不包括文字,默认没有背景,点击后会出现背景。
  39. IconButton(
  40. icon: Icon(Icons.thumb_up),
  41. onPressed: () {
  42. _active = !_active;
  43. print('IconButton按下!');
  44. },
  45. ),
  46. // RaisedButton、FlatButton、OutlineButton都有一个icon 构造函数,通过它可以轻松创建带图标的按钮。
  47. RaisedButton.icon(
  48. onPressed: () {
  49. _active = !_active;
  50. print('RaisedButton按下!');
  51. },
  52. icon: Icon(Icons.send),
  53. label: Text('发送'),
  54. ),
  55. FlatButton.icon(
  56. onPressed: () {
  57. _active = !_active;
  58. print('FlatButton按下!');
  59. },
  60. icon: Icon(Icons.add),
  61. label: Text('添加'),
  62. ),
  63. OutlineButton.icon(
  64. onPressed: () {
  65. _active = !_active;
  66. print('OutlineButton按下!');
  67. },
  68. icon: Icon(Icons.info),
  69. label: Text('详情'),
  70. ),
  71. // 自定义按钮外观
  72. // 定义一个蓝色背景,两边圆角的按钮
  73. FlatButton(
  74. color: Colors.blue,
  75. // 去除背景
  76. // color: Color(0x000000),
  77. highlightColor: Colors.blue[700],
  78. colorBrightness: Brightness.dark,
  79. splashColor: Colors.red,
  80. child: Text('Submit'),
  81. shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20.0)),
  82. onPressed: () {
  83. _active = !_active;
  84. print('FlatButton按下!');
  85. },
  86. ),
  87. ],
  88. ),
  89. ),
  90. );
  91. }
  92. }

Flutter 基础组件:按钮的更多相关文章

  1. Flutter 基础组件:状态管理

    前言 一个永恒的主题,"状态(State)管理",无论是在React/Vue(两者都是支持响应式编程的Web开发框架)还是Flutter中,他们讨论的问题和解决的思想都是一致的. ...

  2. Flutter 基础组件:Widget简介

    概念 在Flutter中几乎所有的对象都是一个Widget.与原生开发中"控件"不同的是,Flutter中的Widget的概念更广泛,它不仅可以表示UI元素,也可以表示一些功能性的 ...

  3. Flutter 基础组件:进度指示器

    前言 Material 组件库中提供了两种进度指示器:LinearProgressIndicator和CircularProgressIndicator,它们都可以同时用于精确的进度指示和模糊的进度指 ...

  4. Flutter 基础组件:输入框和表单

    前言 Material组件库中提供了输入框组件TextField和表单组件Form. 输入框TextField 接口描述 const TextField({ Key key, // 编辑框的控制器,通 ...

  5. Flutter 基础组件:单选框和复选框

    前言 Material组件库中提供了Material风格的单选开关Switch和复选框Checkbox,虽然它们都是继承自StatefulWidget,但它们本身不会保存当前选中状态,选中状态都是由父 ...

  6. Flutter 基础组件:图片和Icon

    前言 Flutter中,可以通过Image组件来加载并显示图片,Image的数据源可以是asset.文件.内存以及网络. ImageProvider 是一个抽象类,主要定义了图片数据获取的接口load ...

  7. Flutter 基础组件:文本、字体样式

    // 文本.字体样式 import 'package:flutter/material.dart'; class TextFontStyle extends StatelessWidget { // ...

  8. flutter 基础组件

    TextWidget class TextWidget extends StatelessWidget { final TextStyle _textStyle = TextStyle( fontSi ...

  9. flutter中的按钮组件

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

随机推荐

  1. jfinal 导出excle

    Controller Map<String,List<PoiUtilHeader>> result = new HashMap<String, List<PoiUt ...

  2. MVC错误页面相关说明

    1.如果使用普通的纯静态页面,在httpErrors中配置的话,返回的status code是200,不会是对应的错误码404.只能使用,aspx或mvc页面,加入,这样就会返回的时候就会显示404错 ...

  3. selenium 浏览器的操作

    一.浏览器的最大化 #coding=utf-8 from selneium import wbedriver driver = wbedriver.Firefox() #将webdriver 的Fir ...

  4. html 03-初识HTML

    03-初识HTML #本文主要内容 头标签 排版标签:<p>. <div>. <span>.<br> . <hr> . <center ...

  5. 阿里云视频点播之URL批量拉取上传(调整为多个视频上传)

    项目引入阿里云视频点播PHP-SDK 背景:2021年乐视云的点播将停止提供服务,项目决定选择选用阿里云的视频的点播.在上线前,需要将之前的视频提前导入资源库,URLS方式拉取是比较方便的,对编辑同事 ...

  6. 保姆级教程,带你认识大数据,从0到1搭建 Hadoop 集群

    大数据简介,概念部分 概念部分,建议之前没有任何大数据相关知识的朋友阅读 大数据概论 什么是大数据 大数据(Big Data)是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需 ...

  7. vue 实现一个商城项目

    在学习了 vue 之后,决定做一个小练习,仿写了一个有关购物商城的小项目.下面就对项目做一个简单的介绍. 项目源码: github 项目的目录结构 -assets 与项目有关的静态资源,包括 css, ...

  8. Python编程学习爆破一些简单加密的文件

    前言 这里只是分享一下Python如何生成爆破字典,对于简单的一些加密文件,咱们可以跑字典获取正确的密码,比如zip加密文件.这里小编给大家简单的介绍一下爆破字典的方法,希望对大家学习Python有帮 ...

  9. 寻找两个数组中的公共元素Java程序代码

    package lianxi; import java.util.*; public class UnionSearch { public static void main(String[] args ...

  10. CCNP第二天之复习CCNA

    1.静态路由的扩展配置: (1).环回接口: 在设备上用于测试TCP/IP协议栈能否正常使用.默认没有.需要手工创建   R1(config)#interface loopback 1         ...