import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:firebase_auth/firebase_auth.dart'; import 'training_detail_screen.dart'; class FavoritesTab extends StatelessWidget { const FavoritesTab({super.key}); @override Widget build(BuildContext context) { final user = FirebaseAuth.instance.currentUser; if (user == null) { return const Center(child: Text('Nicht eingeloggt')); } return Scaffold( appBar: AppBar( title: const Text('Favoriten'), ), body: StreamBuilder( stream: FirebaseFirestore.instance.collection('User').doc(user.uid).snapshots(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } if (!snapshot.hasData || !snapshot.data!.exists) { return const Center(child: Text('Keine Favoriten gefunden')); } final data = snapshot.data!.data() as Map; final favorites = List.from(data['favorites'] ?? []); if (favorites.isEmpty) { return const Center(child: Text('Keine Favoriten gefunden')); } return ListView.builder( itemCount: favorites.length, itemBuilder: (context, index) { return FutureBuilder( future: FirebaseFirestore.instance.collection('Training').doc(favorites[index]).get(), builder: (context, trainingSnapshot) { if (!trainingSnapshot.hasData || !trainingSnapshot.data!.exists) { return const ListTile(title: Text('Training nicht gefunden')); } final trainingData = trainingSnapshot.data!.data() as Map; return Card( margin: const EdgeInsets.all(8.0), child: InkWell( onTap: () { Navigator.push( context, MaterialPageRoute( builder: (context) => TrainingDetailScreen(trainingId: favorites[index]), ), ); }, child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( trainingData['title'] ?? 'Unbekannt', style: const TextStyle( fontSize: 18, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 8), Text( trainingData['description'] ?? 'Keine Beschreibung', style: TextStyle(color: Colors.grey[600]), ), const SizedBox(height: 8), Text( 'Dauer: ${trainingData['duration'] ?? '-'} Minuten', style: TextStyle(color: Colors.grey[600]), ), const SizedBox(height: 8), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( 'Level: ${trainingData['year'] ?? '-'}', style: TextStyle(color: Colors.grey[600]), ), IconButton( icon: const Icon(Icons.favorite, color: Colors.red), onPressed: () async { await FirebaseFirestore.instance.collection('User').doc(user.uid).update({ 'favorites': FieldValue.arrayRemove([favorites[index]]), }); }, ), ], ), ], ), ), ), ); }, ); }, ); }, ), ); } }