import 'package:flutter/material.dart'; import '../models/Ride.dart'; // <-- 1. Import your Ride model import 'RideCardView.dart'; class AnimatedRideCard extends StatefulWidget { // <-- 2. Change rideId to ride final Ride ride; final bool isSelected; final bool isNew; const AnimatedRideCard({ Key? key, // <-- 3. Update the constructor required this.ride, required this.isSelected, this.isNew = false, }) : super(key: key); @override State createState() => _AnimatedRideCardState(); } class _AnimatedRideCardState extends State with SingleTickerProviderStateMixin { late final AnimationController _controller; late final Animation _slideAnimation; late final Animation _fadeAnimation; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 500), ); _slideAnimation = Tween( begin: const Offset(0, 0.5), end: Offset.zero, ).animate(CurvedAnimation(parent: _controller, curve: Curves.easeOutCubic)); _fadeAnimation = Tween( begin: 0.0, end: 1.0, ).animate(CurvedAnimation(parent: _controller, curve: Curves.easeIn)); if (widget.isNew) { _controller.forward(); } else { _controller.value = 1.0; // Show immediately if not new } } @override void didUpdateWidget(covariant AnimatedRideCard oldWidget) { super.didUpdateWidget(oldWidget); if (widget.isNew && !oldWidget.isNew) { _controller.forward(from: 0.0); } } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return SlideTransition( position: _slideAnimation, child: FadeTransition( opacity: _fadeAnimation, child: RideCardView( // <-- 4. Pass the full ride object to the RideCardView ride: widget.ride, isSelected: widget.isSelected, ), ), ); } }