import 'package:flutter/material.dart'; import 'package:sysfarma_mobile/src/core/theme/app_tokens.dart'; /// Loader estandar de la app — reemplazo directo de /// `Center(child: CircularProgressIndicator())`. Entra con un fade suave en /// vez de aparecer de golpe, y usa el color de marca en vez del color por /// defecto del tema. class AppLoader extends StatefulWidget { const AppLoader({super.key, this.size = 36}); final double size; @override State createState() => _AppLoaderState(); } class _AppLoaderState extends State { bool _visible = false; @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { if (mounted) setState(() => _visible = true); }); } @override Widget build(BuildContext context) { return Center( child: AnimatedOpacity( opacity: _visible ? 1 : 0, duration: const Duration(milliseconds: 300), curve: Curves.easeOut, child: SizedBox( width: widget.size, height: widget.size, child: const CircularProgressIndicator( strokeWidth: 2.6, valueColor: AlwaysStoppedAnimation(AppTokens.primary), ), ), ), ); } }