import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:mirror_core/mirror_core.dart'; final youtubeServiceProvider = Provider((ref) { return YouTubeService(); }); final youtubeSearchProvider = AsyncNotifierProvider( YouTubeSearchNotifier.new); class YouTubeSearchState { final String query; final List results; const YouTubeSearchState({this.query = '', this.results = const []}); } class YouTubeSearchNotifier extends AsyncNotifier { @override Future build() async { return const YouTubeSearchState(); } Future search(String query) async { if (query.trim().isEmpty) return; state = const AsyncValue.loading(); state = await AsyncValue.guard(() async { final service = ref.read(youtubeServiceProvider); final results = await service.search(query, limit: 15); return YouTubeSearchState(query: query, results: results); }); } void clear() { state = const AsyncValue.data(YouTubeSearchState()); } }