Flutter--TextButton封装以及属性说明

import 'package:flutter/material.dart';

class UIButton extends StatelessWidget {

  final Widget child;
  final VoidCallback onPressed;

  final Key key;
  final VoidCallback onLongPress;
  final Clip clipBehavior;

  final Color foregroundColor;
  final Color backgroundColor;
  final Color shadowColor;
  final Color overlayColor;
  final double elevation;

  final EdgeInsetsGeometry padding;
  final Size minimumSize;
  final BorderSide side;
  final bool enableInkEffect;
  final BorderRadius borderRadius;

  UIButton({
    this.key,
    @required this.child,
    @required this.onPressed,
    this.onLongPress,
    this.foregroundColor,
    this.backgroundColor,
    this.clipBehavior,
    this.shadowColor,
    this.elevation,
    this.padding,
    this.minimumSize,
    this.side,
    this.enableInkEffect,
    this.overlayColor,
    this.borderRadius
  });


  @override
  Widget build(BuildContext context) {

    ButtonStyle style = ButtonStyle(
      foregroundColor: MaterialStateProperty.all(foregroundColor), //会修改按钮文字颜色,优先级高于textStyle
      backgroundColor: MaterialStateProperty.all(backgroundColor),
      elevation: MaterialStateProperty.all(elevation ?? 0), //按钮悬浮效果高度
      shadowColor: MaterialStateProperty.all(shadowColor), //按钮悬浮后的阴影颜色,需配合elevation,单独使用无效
      padding: MaterialStateProperty.all(padding), //就算不设置也有个默认值, 要想没有边距需要设置为0
      // fixedSize: 按钮大小
      minimumSize: MaterialStateProperty.all(minimumSize ?? Size(0, 0)), //按钮最小尺寸,设为(0,0)就是child的尺寸
      shape: MaterialStateProperty.all(RoundedRectangleBorder(
          borderRadius: borderRadius ?? BorderRadius.circular(8.0),
          side: side ?? BorderSide.none,
      ),),
      // side: MaterialStateProperty.all(side), 使用shape里面的,这个优先级比shape里面的高
      // tapTargetSize: MaterialTapTargetSize.padded
      enableFeedback: false,
      splashFactory: enableInkEffect == false ? NoSplash.splashFactory : null,  //禁用按钮水波纹
      overlayColor: MaterialStateProperty.all(overlayColor), //触摸后水波纹的颜色,位于child底部,背景色之上
    );

    return TextButton(
      key: key,
      onPressed: onPressed,
      onLongPress: onLongPress,
      clipBehavior: clipBehavior ?? Clip.none,
      child: child,
      style: style,
    );
  }


}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值