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