import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:intl/intl.dart'; import '../models/schedule_item.dart'; import '../services/schedule_service.dart'; class ScheduleListWidget extends StatelessWidget { const ScheduleListWidget({super.key}); @override Widget build(BuildContext context) { return Container( decoration: BoxDecoration( color: Theme.of(context).cardTheme.color, borderRadius: BorderRadius.circular(16), ), padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Weekly Schedule', style: Theme.of(context).textTheme.titleLarge?.copyWith( color: Colors.white, fontWeight: FontWeight.bold, ), ), const SizedBox(height: 12), Expanded( child: FutureBuilder>( future: Provider.of( context, listen: false, ).fetchWeeklySchedules(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return const Center(child: CircularProgressIndicator()); } if (snapshot.hasError) { return const Center( child: Text( 'Failed to load schedules', style: TextStyle(color: Colors.white54), ), ); } if (!snapshot.hasData || snapshot.data!.isEmpty) { return const Center( child: Text( 'No schedules this week', style: TextStyle(color: Colors.white54), ), ); } final schedules = snapshot.data!; // Sort by date schedules.sort((a, b) => a.startDate.compareTo(b.startDate)); return ListView.separated( itemCount: schedules.length, separatorBuilder: (context, index) => const Divider(color: Colors.white10), itemBuilder: (context, index) { final item = schedules[index]; final dateStr = DateFormat( 'E, MMM d', ).format(item.startDate); final timeStr = item.isAllDay ? 'All Day' : DateFormat('HH:mm').format(item.startDate); return ListTile( contentPadding: EdgeInsets.zero, leading: Container( padding: const EdgeInsets.symmetric( horizontal: 12, vertical: 8, ), decoration: BoxDecoration( color: Colors.white10, borderRadius: BorderRadius.circular(8), ), child: Column( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ Text( DateFormat('d').format(item.startDate), style: const TextStyle( color: Colors.white, fontWeight: FontWeight.bold, fontSize: 18, ), ), Text( DateFormat('E').format(item.startDate), style: const TextStyle( color: Colors.white70, fontSize: 12, ), ), ], ), ), title: Text( item.title, style: const TextStyle( color: Colors.white, fontWeight: FontWeight.w500, ), ), subtitle: Text( timeStr, style: const TextStyle(color: Colors.white54), ), ); }, ); }, ), ), ], ), ); } }