import 'package:flutter/material.dart'; class EasyLine extends StatelessWidget { final double length; final double width; final Color color; final double thickness; final double spacing; final LineType lineType; final Axis axis; const EasyLine({ key, this.length = 50.0, this.color = Colors.grey, this.thickness = 3, this.spacing = 3.0, this.width = 2.0, this.lineType = LineType.normal, this.axis = Axis.horizontal, }) : super(key: key); @override Widget build(BuildContext context) { return Container( width: axis == Axis.horizontal ? length : thickness, height: axis == Axis.vertical ? length : thickness, decoration: BoxDecoration( color: color, borderRadius: BorderRadius.circular(100), ), ); } } enum LineType { normal, dotted, dashed, } class LineStyle { final Color defaultLineColor; final Color unreachedLineColor; final Color activeLineColor; final Color finishedLineColor; final double lineLength; final double lineThickness; final double lineWidth; final double lineSpace; final LineType lineType; final LineType unreachedLineType; final Color progressColor; final double progress; const LineStyle({ Key key, this.lineType = LineType.dotted, this.defaultLineColor, this.unreachedLineColor, this.activeLineColor, this.finishedLineColor, this.lineLength = 40, this.lineWidth = 4, this.lineThickness = 1, this.lineSpace = 5, this.unreachedLineType, this.progressColor, this.progress, }) : assert( progressColor == null || progress != null, 'progress should be defined to use progressColor', ), assert( progress == null || (progress >= 0 && progress <= 1), 'progress value should be between 0 and 1', ); }