import 'dart:async'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:ui/providers/APIs.dart'; import 'package:ui/providers/server_response.dart'; final welcomePageDataProvider = FutureProvider.autoDispose((ref) async { final dio = await APIs.getDio(); var resp = await dio.get(APIs.watchlistUrl); var sp = ServerResponse.fromJson(resp.data); List favList = List.empty(growable: true); for (var item in sp.data as List) { var tv = TvSeries.fromJson(item); favList.add(tv); } return favList; }); var searchPageDataProvider = AsyncNotifierProvider.autoDispose >(SearchPageData.new); class SearchPageData extends AutoDisposeAsyncNotifier> { List list = List.empty(growable: true); @override FutureOr> build() async { return list; } Future submit2Watchlist(int tmdbId, int storageId, String resolution) async { final dio = await APIs.getDio(); var resp = await dio .post(APIs.watchlistUrl, data: { "tmdb_id": tmdbId, "storage_id": storageId, "resolution": resolution }); var sp = ServerResponse.fromJson(resp.data); if (sp.code != 0) { throw sp.message; } ref.invalidate(welcomePageDataProvider); } Future queryResults(String q) async { list = List.empty(growable: true); final dio = await APIs.getDio(); var resp = await dio.get(APIs.searchUrl, queryParameters: {"query": q}); //var dy = jsonDecode(resp.data.toString()); print("search page results: ${resp.data}"); var rsp = ServerResponse.fromJson(resp.data as Map); if (rsp.code != 0) { throw rsp.message; } var data = rsp.data as Map; var results = data["results"] as List; for (final r in results) { var res = SearchResult.fromJson(r); list.add(res); } ref.invalidateSelf(); } } class SearchResult { String? originalName; int? id; String? name; int? voteCount; double? voteAverage; String? posterPath; String? firstAirDate; double? popularity; List? genreIds; String? originalLanguage; String? backdropPath; String? overview; List? originCountry; SearchResult( {this.originalName, this.id, this.name, this.voteCount, this.voteAverage, this.posterPath, this.firstAirDate, this.popularity, this.genreIds, this.originalLanguage, this.backdropPath, this.overview, this.originCountry}); SearchResult.fromJson(Map json) { originalName = json['original_name']; id = json['id']; name = json['name']; voteCount = json['vote_count']; voteAverage = json['vote_average']; posterPath = json['poster_path']; firstAirDate = json['first_air_date']; popularity = json['popularity']; genreIds = json['genre_ids'].cast(); originalLanguage = json['original_language']; backdropPath = json['backdrop_path']; overview = json['overview']; originCountry = json['origin_country'].cast(); } } class TvSeries { int? id; int? tmdbId; String? name; String? originalName; String? overview; String? path; String? posterPath; TvSeries( {this.id, this.tmdbId, this.name, this.originalName, this.overview, this.path, this.posterPath}); TvSeries.fromJson(Map json) { id = json['id']; tmdbId = json['tmdb_id']; name = json['name_cn']; originalName = json['original_name']; overview = json['overview']; path = json['path']; posterPath = json["poster_path"]; } }