blob: bf4098af64c40e38b86d31eda8610fff964bd758 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:pmsna1/database/helper.dart';
import 'package:pmsna1/models/popular.dart';
import 'package:pmsna1/models/popular_detail.dart';
class PopularApi {
String apiKey = '0cb894064f40656f3575e8ccae3d8d73';
Uri get popularLink => Uri.parse(
'https://api.themoviedb.org/3/movie/popular?api_key=$apiKey&language=es-MX&page=1');
Uri getDetailLink(int id) => Uri.parse(
'https://api.themoviedb.org/3/movie/$id?api_key=$apiKey&language=es-MX&page=1&append_to_response=videos,credits',
);
Future<List<Popular>?> getAllPopular() async {
http.Response result = await http.get(popularLink);
var list = jsonDecode(result.body)['results'] as List;
if (result.statusCode != 200) {
return null;
}
List<Popular> favorites = await DatabaseHelper().getAllFavorites();
return list.map((p) {
Popular popular = Popular.fromMap(p);
if (favorites.where((f) => f.id == popular.id).isNotEmpty) {
popular.hasFavorite = true;
}
return popular;
}).toList();
}
Future<PopularDetail?> getPopularDetail(int id) async {
http.Response result = await http.get(getDetailLink(id));
var map = jsonDecode(result.body) as Map<String, dynamic>;
if (result.statusCode != 200) {
return null;
}
PopularDetail detail = PopularDetail.fromMap(map);
detail.hasFavorite = await DatabaseHelper().hasFavorite(detail.id!);
return detail;
}
}
|