import 'package:flutter/material.dart'; import 'package:shimmer/shimmer.dart'; import 'package:flutter_animate/flutter_animate.dart'; import '../core/theme/app_theme.dart'; class LoadingIndicator extends StatelessWidget { final String? message; const LoadingIndicator({super.key, this.message}); @override Widget build(BuildContext context) { return Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ const CircularProgressIndicator(), if (message != null) ...[ const SizedBox(height: 16), Text(message!, style: Theme.of(context).textTheme.bodyMedium), ], ], ), ).animate().fadeIn(duration: 200.ms); } } class ShimmerList extends StatelessWidget { final int itemCount; const ShimmerList({super.key, this.itemCount = 5}); @override Widget build(BuildContext context) { return Shimmer.fromColors( baseColor: VoIdeaColors.muted.withOpacity(0.1), highlightColor: VoIdeaColors.muted.withOpacity(0.05), child: ListView.builder( itemCount: itemCount, itemBuilder: (_, __) => Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8), child: Container( height: 80, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(12), ), ), ), ), ); } }