import 'package:flutter/material.dart' hide Title; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../providers/providers.dart'; import '../sources/source.dart'; import 'widgets/comic_cover.dart'; class LibraryPage extends ConsumerWidget { const LibraryPage({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final titlesAsync = ref.watch(libraryTitlesProvider); return Scaffold( appBar: AppBar(title: const Text('Library')), body: titlesAsync.when( loading: () => const Center(child: CircularProgressIndicator()), error: (e, _) => Center(child: Text('Error: $e')), data: (titles) { if (titles.isEmpty) { return const Center( child: Padding( padding: EdgeInsets.all(24), child: Text( 'Star a series on its title page to add it to your Library.', textAlign: TextAlign.center, ), ), ); } return ListView.separated( itemCount: titles.length, separatorBuilder: (context, index) => const Divider(height: 1), itemBuilder: (context, i) { final t = titles[i]; final sourceId = SourceId.tryParse(t.source); final label = sourceId?.label ?? t.source; return ListTile( leading: SizedBox( width: 48, height: 64, child: ComicCover(url: t.coverUrl, sourceId: sourceId), ), title: Text(t.title), subtitle: Text(label), trailing: const Icon(Icons.star, size: 18), onTap: () => context.push('/title/${t.id}'), ); }, ); }, ), ); } }