Flutter基础控件:RaisedButton、 MaterialButton、 FloatingActionButton

@TOCRaisedButton
Material Design中的button, 一个凸起的材质矩形按钮

属性

onPressed

点击事件。如果传递了 null 值,整个按钮是不可点击的,disabled 状态

onLongPress

长按事件

onHighlightChanged

水波纹高亮变化回调,按下返回true,抬起返回false

textTheme

按钮的主题
enum ButtonTextTheme {
/// Button text is black or white depending on [ThemeData.brightness].
normal,
/// 字体变成了主题同一颜色。
accent,
/// Button text is based on [ThemeData.primaryColor].
primary,
}

textColor

文字的颜色

disabledTextColor

按钮禁用时候文字的颜色

color

按钮的背景颜色

disabledColor

按钮被禁用的时候显示的颜色

focusColor

联动节点获得焦点时的颜色

hoverColor

鼠标悬停时的颜色

highlightColor

点击或者toch控件高亮的时候显示在控件上面,水波纹下面的颜色

splashColor

水波纹的颜色

RaisedButton(
  splashColor: Colors.pink,
  child: Text('波纹'),
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(25),
  ),
  onPressed: () {},
),

colorBrightness

按钮主题高亮

elevation

按钮下面的阴影,值越大阴影范围越大

focusElevation

联动节点获得焦点时的阴影尺寸

hoverElevation

鼠标悬停时阴影尺寸

highlightElevation

高亮时候的阴影

disabledElevation

按下的时候的阴影

padding

内间距

shape

形状

基于ShapeBorder的类有四个,下面看一下这四个类。
//圆形
const CircleBorder({
  BorderSide side: BorderSide.none
})
//斜角(了解过机械的话可以理解成倒角)
const BeveledRectangleBorder({
  BorderSide side: BorderSide.none,
  BorderRadiusGeometry borderRadius: BorderRadius.zero
})
//圆角
const RoundedRectangleBorder({
  BorderSide side: BorderSide.none,
  BorderRadiusGeometry borderRadius: BorderRadius.zero
})
//也是圆角,但是和RoundedRectangleBorder不同,有最大值,超过最大值以最大值显示。
const ContinuousRectangleBorder({
  BorderSide side: BorderSide.none,
  BorderRadiusGeometry borderRadius: BorderRadius.zero
})
RaisedButton(
  child: Text('圆角按钮'),
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(25),
  ),
  onPressed: () {},
),

clipBehavior

剪裁

枚举值
Clip.hardEdge
Clip.antiAlias
Clip.antiAliasWithSaveLayer
Clip.none

focusNode

联动节点

autofocus

materialTapTargetSize

设置按钮点击区域大小

animationDuration

水波纹动画持续时间

new Expanded(
     child: RaisedButton(
           onPressed: () {},
           animationDuration: Duration(milliseconds: 400),
           textTheme: ButtonTextTheme.normal,
           splashColor: Colors.pink,
           color: Colors.red,
           textColor: Colors.white,
           disabledColor: Colors.blueGrey,
           child: Text('Button', style: TextStyle(fontSize: 12)),
      ),
),

child

一般是Text widget

RaisedButton 本身不支持宽度和高度的属性控制,如果要指定宽度和高度,可以借助 Container Widget,指定 Container 宽度和高度即可同时控制 Button 宽度和高度

Container(
  width: 300,
  height: 50,
  child: RaisedButton(
    child: Text('宽度高度按钮'),
    onPressed: () {},
  ),
),

MaterialButton

RaisedButton不支持宽高但是 MaterialButton支持 minWidth(最小宽)和hight(高)

OutlineButton

默认有一个边框,不带阴影且背景透明。按下后,边框颜色会变亮、同时出现背景和阴影(较弱)。

disabledBorderColor

禁用时边框颜色,默认为灰色。

borderSide

边框样式,color和width没啥说的,一个颜色一个宽度,style要说一下,这个只有solid和none,也就是说只有实线边框和没有边框。

RaisedButton

和MaterialButton默认样式不同,默认带有阴影和灰色背景。按下后,阴影会变大没有height和minWidth。

FlatButton

扁平按钮,默认背景透明并不带阴影。按下后,会有背景色。

FloatingActionButton

页面的悬浮按钮。

const FloatingActionButton({
  Key key,
  Widget child,
  String tooltip,
  Color foregroundColor,          //前景色,不会覆盖文字,加了之后改变了文字的颜色
  Color backgroundColor,        //背景色
  Color focusColor,
  Color hoverColor,
  Object heroTag: const _DefaultHeroTag(),      //动画效果
  double elevation,
  double focusElevation, 
  double hoverElevation, 
  double highlightElevation,  
  double disabledElevation,   
  @required VoidCallback onPressed,
  bool mini: false,                    //为true时按钮尺寸会变小
  ShapeBorder shape,
  Clip clipBehavior: Clip.none,
  FocusNode focusNode, 
  MaterialTapTargetSize materialTapTargetSize,
  bool isExtended: false              //是否扩展
})

heroTag

设置为null,则不启用过渡动画,如果悬浮按钮在两个页面内的位置不同,页面切换时动作生硬。不设置的话为默认值,平滑过渡。

mini

为true时为按钮会缩小,但是要注意的是,这个缩小只是尺寸缩小,不是整体缩放,内容大小还是需要手动设置

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: Scaffold(
        floatingActionButton: FloatingActionButton(
          onPressed: () {
             print(1);
          },
          child: Icon(Icons.add)
        ),
      )
    );
  }
}

圆角Button

Widget loginBtn() {
  return Container(
    height: BaseSize.dp(40),
    width: double.infinity,
    padding: EdgeInsets.only(right: BaseSize.dp(35), left: BaseSize.dp(35)),
    child: RaisedButton(
      shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(28),
          side: BorderSide(color: Colors.red)),
      color: Colors.white,
      elevation: 0,
      highlightElevation: 0,
      disabledElevation: 0,
      onPressed: () {},
      child: Text('登录'),
    ),
  );
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值