import 'package:flutter/material.dart'; import '../theme/app_theme.dart'; /// Smooth Shimmer Loading Skeleton Effect Widget. class ShimmerLoading extends StatefulWidget { final double width; final double height; final double? borderRadius; const ShimmerLoading({ super.key, required this.width, required this.height, this.borderRadius, }); @override State createState() => _ShimmerLoadingState(); } class _ShimmerLoadingState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 1200), )..repeat(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final activeTheme = AppTheme.activePreset; final radius = widget.borderRadius ?? activeTheme.borderRadius; final baseColor = activeTheme.glassSurface; final highlightColor = activeTheme.glassBorder.withValues(alpha: 0.5); return AnimatedBuilder( animation: _controller, builder: (context, child) { return Container( width: widget.width, height: widget.height, decoration: BoxDecoration( borderRadius: BorderRadius.circular(radius), gradient: LinearGradient( begin: Alignment.centerLeft, end: Alignment.centerRight, colors: [ baseColor, highlightColor, baseColor, ], stops: [ (_controller.value - 0.3).clamp(0.0, 1.0), _controller.value, (_controller.value + 0.3).clamp(0.0, 1.0), ], ), ), ); }, ); } }