zoukankan      html  css  js  c++  java
  • Flutter 中的常见的按钮组件 以及自 定义按钮组件

    一、Flutter 中的按钮组件介绍
      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 按钮的颜色
    disabledColor  Color  按钮禁用时的颜色
    disabledTextColor  Color  按钮禁用时的文本颜色
    splashColor  Color  点击按钮时水波纹的颜色
    highlightColor  Color  点击(长按)按钮后按钮的颜色
    elevation  double  阴影的范围,值越大阴影范围越大
    padding  内边距
    shape  设置按钮的形状
       shape: RoundedRectangleBorder(
          borderRadius:
          BorderRadius.circular(10),
       )
      shape: CircleBorder(
         side: BorderSide(
            color: Colors.white,
        )
      ) 
     
     
    案例代码
     
    import 'package:flutter/material.dart';

    class ButtonDemoPage extends StatelessWidget {
    const ButtonDemoPage({Key key}) : super(key: key);

    @override
    Widget build(BuildContext context) {
    return Scaffold(
    appBar: AppBar(
    title: Text("按钮演示页面"),
    actions: <Widget>[
    IconButton(
    icon: Icon(Icons.settings),
    onPressed: (){

    },
    )
    ],
    ),
    body: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
     MaterialButton(
    height: Screen.width(height: 85),
    color: ColorGather.colorMain(),
    textColor: Colors.white,
    elevation: 2.0,
    shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.all(Radius.circular(Screen.width(8)))
    ),
    child: Text('确认', style: TextStyle(fontSize: Screen.width(28)),),
    onPressed:() {},
    ),

    Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    RaisedButton(
    child: Text('普通按钮'),
    onPressed: () {
    print("普通按钮");
    },
    ),
    SizedBox( 5),
    RaisedButton(
    child: Text('颜色按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    onPressed: () {
    print("有颜色按钮");
    },
    ),
    SizedBox( 5),
    RaisedButton(
    child: Text('阴影按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    onPressed: () {
    print("有阴影按钮");
    },
    ),
    SizedBox( 5),
    RaisedButton.icon(
    icon: Icon(Icons.search),
    label: Text('图标按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    // onPressed: null,
    onPressed: () {
    print("图标按钮");
    })
    ],
    ),
    SizedBox(height: 10),
    Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    Container(
    height: 50,
    400,
    child: RaisedButton(
    child: Text('宽度高度'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    onPressed: () {
    print("宽度高度");
    },
    ),
    )
    ],
    ),
    SizedBox(height: 10),
    Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    Expanded(
    child: Container(
    height: 60,
    margin: EdgeInsets.all(10),
    child: RaisedButton(
    child: Text('自适应按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    onPressed: () {
    print("自适应按钮");
    },
    ),
    ),
    )
    ],
    ),
    SizedBox(height: 10),
    Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    RaisedButton(
    child: Text('圆角按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(10)),
    onPressed: () {
    print("圆角按钮");
    }),
    Container(
    height: 80,
    child: RaisedButton(
    child: Text('圆形按钮'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    splashColor: Colors.red,
    shape:
    CircleBorder(side: BorderSide(color: Colors.white)),
    onPressed: () {
    print("圆形按钮");
    }),
    ),
    FlatButton(
    child: Text("按钮"),
    color: Colors.blue,
    textColor: Colors.yellow,
    onPressed: () {
    print('FlatButton');
    },
    ),
    SizedBox( 10),
    OutlineButton(
    child: Text("按钮"),
    // color: Colors.red, //没有效果
    // textColor: Colors.yellow,
    onPressed: () {
    print('FlatButton');
    })
    ],
    ),
    SizedBox(height: 10),
    Row(
    mainAxisAlignment: MainAxisAlignment.center,
    children: <Widget>[
    Expanded(
    child: Container(
    margin: EdgeInsets.all(20),
    height: 50,
    child: OutlineButton(child: Text("注册"), onPressed: () {}),
    ),
    )
    ],
    ),
    Row(
    mainAxisAlignment: MainAxisAlignment.end,
    children: <Widget>[
    ButtonBar(
    children: <Widget>[

    RaisedButton(
    child: Text('登录'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    onPressed: () {
    print("宽度高度");
    },
    ),
    RaisedButton(
    child: Text('注册'),
    color: Colors.blue,
    textColor: Colors.white,
    elevation: 20,
    onPressed: () {
    print("宽度高度");
    },
    ),
    MyButton(text: "自定义按钮",height: 60.0, 100.0,pressed: (){
    print('自定义按钮');
    })

    ],
    )
    ],
    )
    ],
    ));
    }
    }


    //自定义按钮组件

    class MyButton extends StatelessWidget {
    final text;
    final pressed;
    final width;
    final height;
    const MyButton({this.text='',this.pressed=null,this.width=80,this.height=30}) ;

    @override
    Widget build(BuildContext context) {
    return Container(
    height: this.height,
    this.width,
    child: RaisedButton(
    child: Text(this.text),
    onPressed:this.pressed ,
    ),
    );
    }
    }
  • 相关阅读:
    区块链:交易收发机制
    区块链:POA委员会选举机制
    区块链:POA区块生成机制
    区块链:最小可行区块链原理解析2
    基于 react 的Java web 应用—— 组件复用(后续需更新)
    struts2验证码
    struts2验证码
    struts2验证码
    struts2验证码
    axis2 411
  • 原文地址:https://www.cnblogs.com/zhaofeis/p/12342990.html
Copyright © 2011-2022 走看看