美文网首页
flutter-虚线

flutter-虚线

作者: ChaosHeart | 来源:发表于2022-03-17 14:38 被阅读0次
import 'package:flutter/material.dart';

///虚线1
class DashedLineWidget1 extends StatelessWidget {
  final Axis axis; //方向:水平或垂直
  final double dasWidth; //线的宽度
  final double dasHeight; //线的高度
  final Color dasColor; //线的颜色
  final double intervalWidth; //间隔的宽度

  const DashedLineWidget1({
    this.axis,
    @required this.dasWidth,
    @required this.dasHeight,
    @required this.dasColor,
    this.intervalWidth,
  });

  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (BuildContext context, BoxConstraints constraints) {
        final boxWidth = constraints.constrainWidth(); // 容器的宽度
        final dashCount = (boxWidth / (2 * dasWidth)).floor(); //个数
        return Flex(
          direction: axis ?? Axis.horizontal,
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: List.generate(dashCount, (_) {
            return SizedBox(
              width: dasWidth,
              height: dasHeight,
              child: DecoratedBox(
                decoration: BoxDecoration(color: dasColor),
              ),
            );
          }),
        );
      },
    );
  }
}

///虚线2
class DashedLineWidget2 extends StatelessWidget {
  final Axis axis; //方向:水平或垂直
  final double dasWidth; //根据虚线的方向确定自己虚线的宽度
  final double dasHeight; //根据虚线的方向确定自己虚线的高度
  final Color dasColor; //虚线的颜色
  final int count; //内部会根据设置的个数和宽高确定密度(虚线的空白间隔)

  DashedLineWidget2({
    this.axis,
    @required this.dasWidth,
    @required this.dasHeight,
    @required this.dasColor,
    @required this.count,
  });

  @override
  Widget build(BuildContext context) {
    return LayoutBuilder(
      builder: (BuildContext context, BoxConstraints constraints) {
        return Flex(
          direction: axis ?? Axis.horizontal,
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: List.generate(this.count, (int index) {
            return SizedBox(
              width: dasWidth,
              height: dasHeight,
              child: DecoratedBox(
                decoration: BoxDecoration(color: dasColor),
              ),
            );
          }),
        );
      },
    );
  }
}

相关文章

网友评论

      本文标题:flutter-虚线

      本文链接:https://www.haomeiwen.com/subject/jcvvdrtx.html