import 'package:flutter/material.dart'; /// Widget avec animation de slide-in automatique class AnimatedSlideIn extends StatefulWidget { final Widget child; final Duration duration; final Duration delay; final Offset begin; final Curve curve; const AnimatedSlideIn({ super.key, required this.child, this.duration = const Duration(milliseconds: 600), this.delay = Duration.zero, this.begin = const Offset(0, 0.3), this.curve = Curves.easeOut, }); @override State createState() => _AnimatedSlideInState(); } class _AnimatedSlideInState extends State with SingleTickerProviderStateMixin { late AnimationController _controller; late Animation _slideAnimation; late Animation _fadeAnimation; @override void initState() { super.initState(); _controller = AnimationController( duration: widget.duration, vsync: this, ); _slideAnimation = Tween( begin: widget.begin, end: Offset.zero, ).animate(CurvedAnimation( parent: _controller, curve: widget.curve, )); _fadeAnimation = CurvedAnimation( parent: _controller, curve: widget.curve, ); Future.delayed(widget.delay, () { if (mounted) { _controller.forward(); } }); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return SlideTransition( position: _slideAnimation, child: FadeTransition( opacity: _fadeAnimation, child: widget.child, ), ); } }