import 'package:flutter/material.dart'; class ProgressBar extends StatelessWidget { final double percent; final double width; final double height; final double insetX; final double insetY; const ProgressBar({ super.key, required this.percent, required this.width, required this.height, this.insetX = 8, this.insetY = 6, }); @override Widget build(BuildContext context) { final p = percent.clamp(0.0, 1.0); final innerW = (width - insetX * 2).clamp(0.0, double.infinity); final innerH = (height - insetY * 2).clamp(0.0, double.infinity); final fillW = innerW * p; final fillAsset = p >= 1 ? 'assets/images/04ac514f79905c0fd3fd97534829cc34.png' : 'assets/images/4ea0244a9d7ad2e9357424465415f8b4.png'; return SizedBox( width: width, height: height, child: Stack( children: [ Positioned.fill( child: Image.asset( 'assets/images/18a74842e653d3118c500a2248a2fda7.png', fit: BoxFit.fill, ), ), Positioned( left: insetX, top: insetY, width: innerW, height: innerH, child: Align( alignment: Alignment.centerLeft, child: ClipRect( child: SizedBox( width: fillW, height: innerH, child: OverflowBox( alignment: Alignment.centerLeft, minWidth: innerW, maxWidth: innerW, child: Image.asset(fillAsset, fit: BoxFit.fill), ), ), ), ), ), ], ), ); } }