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
    );
  }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_41735943/article/details/120014480
Recomendado
Clasificación