import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../app/theme.dart'; import '../../data/catalog_repository.dart'; import 'section_header.dart'; /// Shows a loader / retry state until the catalog is available. class CatalogBuilder extends ConsumerWidget { const CatalogBuilder({super.key, required this.builder}); final Widget Function(Catalog catalog) builder; @override Widget build(BuildContext context, WidgetRef ref) { return ref.watch(catalogProvider).when( data: builder, loading: () => const Center(child: CircularProgressIndicator(color: NkColors.sun)), error: (e, _) => Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ const EmptyState( icon: Icons.cloud_off_outlined, title: "Couldn't load songs", message: 'Check your connection. Downloaded songs still play offline.', ), FilledButton(onPressed: () => ref.invalidate(catalogProvider), child: const Text('Try again')), ], ), ), ); } }