美文网首页
Button-按钮组件

Button-按钮组件

作者: 爱吃豆包 | 来源:发表于2021-01-04 09:33 被阅读0次

    Flutter 提供了 10 多种 Button 类组件,比如 RaisedButton、FlatButton、OutlineButton、DropdownButton、RawMaterialButton、PopupMenuButton、IconButton、BackButton、CloseButton、ButtonBar、ToggleButtons等。

    这里不会对每一个组件都讲解,而是介绍最常用的4个组件:RaisedButtonFlatButtonOutlineButtonIconButton

    RaisedButton、FlatButton、OutlineButton 基础用法如下:

    RaisedButton(child: Text('RaisedButton'),onPressed: (){},),
    FlatButton(child: Text('FlatButton'),color: Colors.blue,onPressed: (){},),
    OutlineButton(child: Text('OutlineButton'),onPressed: (){},),
    
    
    image

    这3个组件的用法基本一样,仅仅是展示的外观效果不同,区别是:

    • RaisedButton:Material风格”凸起“的按钮。
    • FlatButton:扁平的按钮。
    • OutlineButton:带边框的按钮。

    下面以 RaisedButton 为例介绍, RaisedButton 有3个回调函数,分别为:

    • onPressed:点击回调。
    • onLongPress:长按回调。
    • onHighlightChanged:按钮高亮变化回调,当点击或者按住按钮时,按钮出现水波纹效果,水波纹变化时就是高亮状态。

    用法如下:

    RaisedButton(
      child: Text('RaisedButton'),
      onPressed: () {
        print('onPressed');
      },
      onLongPress: () {
        print('onLongPress');
      },
      onHighlightChanged: (highlight) {
        print('onHighlightChanged:$highlight');
      },
    ),
    
    

    按钮有两种状态:禁用状态和正常状态。当onPressed不设置或者设置为 null 时为禁用状态,反之为正常状态,禁用状态下不可点击。

    不同状态下字体颜色和背景颜色说明:

    属性 说明
    textColor 正常状态下,字体颜色
    color 正常状态下,背景颜色
    disabledTextColor 禁用状态下,字体颜色
    disabledColor 禁用状态下,背景颜色
    highlightColor 高亮颜色,按下时的颜色
    splashColor 水波纹颜色,按下时会有水波纹效果

    hover 相关的属性是鼠标悬停时的状态,移动端没有效果,比如 hoverColor 表示鼠标悬停时的颜色。

    focus 相关的属性是指获取焦点时的状态。

    这两种状态在 Android 和 iOS 端基本用不到,这里不再介绍相关属性。

    设置阴影:

    RaisedButton(
      child: Text('RaisedButton'),
      onPressed: () {
      },
      elevation: 10.0,
    ),
    
    RaisedButton(
      child: Text('RaisedButton'),
      onPressed: () {
      },
    
      elevation: 1.0,
    ),
    
    
    image

    阴影设置为 10 和 1 效果还是很明显的,这是正常状态下的阴影,还有高亮阴影(highlightElevation)和禁用状态阴影(disabledElevation),用法一样。

    设置按钮形状:

    RaisedButton(
      child: Text('RaisedButton'),
      onPressed: () {},
      shape: BeveledRectangleBorder(
          side: BorderSide(width: 1, color: Colors.red),
          borderRadius: BorderRadius.circular(10)),
      elevation: 1.0,
    )
    
    
    image

    系统还已经定义了很多形状

    IconButton 的用法和 RaisedButton 基本一样,用法如下:

    IconButton(icon: Icon(Icons.add),)
    
    
    image

    代码

    import 'package:flutter/material.dart';
    
    /**
     * Flutter 提供了 10 多种 Button 类组件,
     * 比如 RaisedButton、FlatButton、OutlineButton、
     * DropdownButton、RawMaterialButton、PopupMenuButton、
     * IconButton、BackButton、CloseButton、ButtonBar、
     * ToggleButtons等。
     * 
     * 
     * 介绍最常用的4个组件:RaisedButton、FlatButton、OutlineButton、IconButton
     * 
     */
    class ButtonDemo extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return Center(
          child: Column(
            children: [
              RaisedButton(
                  // elevation: 0.0, // 设置阴影 0.0 ~ 10.0 之间
                  child: Text("Material风格”凸起“的按钮-RaisedButton"),
                  onPressed: () {
                    // 点击回调
                    print("点击了");
                  },
                  onLongPress: () {
                    // 长按回调。
                    print("长按回调");
                  },
                  // 按钮高亮变化回调,当点击或者按住按钮时,按钮出现水波纹效果,水波纹变化时就是高亮状态。
                  onHighlightChanged: (bool) {}),
              FlatButton(
                  // elevation: 0.0, // 设置阴影 0.0 ~ 10.0 之间
                  child: Text("扁平的按钮-FlatButton"),
                  color: Colors.blue, // 按钮背景颜色
                  onPressed: () {
                    // 点击回调
                    print("点击了");
                  },
                  onLongPress: () {
                    // 长按回调。
                    print("长按回调");
                  },
                  // 按钮高亮变化回调,当点击或者按住按钮时,按钮出现水波纹效果,水波纹变化时就是高亮状态。
                  onHighlightChanged: (bool) {}),
              OutlineButton(
                // elevation: 0.0, // 设置阴影 0.0 ~ 10.0 之间
                child: Text("带边框的按钮-OutlineButton"),
                onPressed: () {
                  // 点击回调
                  print("点击了");
                },
                onLongPress: () {
                  // 长按回调。
                  print("长按回调");
                },
              ),
              RaisedButton(
                child: Text('设置按钮形状例子-RaisedButton'),
                onPressed: () {},
                // shape 形状属性
                shape: BeveledRectangleBorder(
                    // 边框样式
                    side: BorderSide(width: 1, color: Colors.red),
                    borderRadius: BorderRadius.circular(10) // 边框的边角样式
                ),
                elevation: 1.0,
              ),
              // Icon 按钮
              IconButton(
                icon: Icon(Icons.add), 
                onPressed: () {
                  print("点击了");
                },
              )
            ],
          ),
        );
      }
    }
    
    
    截屏2021-01-03 下午8.13.56.png

    相关文章

      网友评论

          本文标题:Button-按钮组件

          本文链接:https://www.haomeiwen.com/subject/qadpoktx.html