Flutter--Container组件接口优化

 记录一个思路,后续逐步完善

import 'package:flutter/material.dart';

class UIContainer extends Container {

  UIContainer({
    Key key,
    Widget child,
    double width,
    double height,
    AlignmentGeometry alignment,

    Color backgroundColor = const Color(0xffffffff),
    BoxBorder border,
    BorderRadiusGeometry borderRadius,
    Gradient backgroundGradient,
    List<BoxShadow> boxShadow,

    DecorationImage image,

    Color foregroundColor,
    Gradient foregroundGradient,

    BoxConstraints constraints,
    EdgeInsetsGeometry margin,
    EdgeInsetsGeometry padding,
    Matrix4 transform,
    AlignmentGeometry transformAlignment,
    Clip clipBehavior = Clip.none,
  }) : super(
      key: key,
      alignment: alignment,
      width: width,
      height: height,
      decoration: BoxDecoration(
        color: backgroundColor,
        image: image,
        gradient: backgroundGradient,
        borderRadius: borderRadius,
        border: border,
        boxShadow: boxShadow
      ),
      foregroundDecoration: BoxDecoration(
        color: foregroundColor,
        gradient: foregroundGradient,
      ),
      constraints: constraints,
      margin: margin,
      padding: padding,
      transform: transform,
      transformAlignment: transformAlignment,
      child: child,
      clipBehavior: clipBehavior
  );

  static UIContainer defView({
    Key key,
    Widget child,
    double width,
    double height,
    double radius,
    Color backgroundColor,
    Color borderColor,
    double borderWidth,
    double padding,
    double margin,
    bool showShadow = false,
    Clip clipBehavior
  }) {
    return UIContainer(
      key: key,
      child: child,
      borderRadius: BorderRadius.circular(radius ?? 10),
      backgroundColor: backgroundColor ?? Colors.white,
      width: width,
      height: height,
      padding: padding == null ? null : EdgeInsets.all(padding),
      margin: margin == null ? null : EdgeInsets.all(margin),
      boxShadow: showShadow ? [
        BoxShadowExt.defShadow()
      ] : null,
      border: borderColor == null && borderWidth == null ? null : Border.all(
        color: borderColor ?? Colors.grey,
        width: borderWidth ?? 1,
      ),
      clipBehavior: clipBehavior ?? (radius == null ? Clip.none : Clip.hardEdge),
    );
  }
}


extension BoxShadowExt on BoxShadow {
  static BoxShadow defShadow({Color color, Offset offset, double blurRadius}) {
    return BoxShadow(
        color: color ?? Color(0xe1e3e4e9),
        offset: offset ?? Offset.zero,
        blurRadius: blurRadius ?? 8.0
    );
  }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值