mirror of
https://github.com/ArizArmeidi/AnimSearch.git
synced 2025-05-17 22:16:06 +08:00
Fixed all homescreen requests to work with API v4
This commit is contained in:
6
lib/constants.dart
Normal file
6
lib/constants.dart
Normal file
@ -0,0 +1,6 @@
|
||||
const top_url = 'https://api.jikan.moe/v4/anime?status=airing';
|
||||
const upcoming_url = 'https://api.jikan.moe/v4/anime?status=upcoming';
|
||||
const series_url = 'https://api.jikan.moe/v4/anime?status=airing&type=tv';
|
||||
const movie_url = 'https://api.jikan.moe/v4/anime?status=airing&type=movie';
|
||||
const ova_url = 'https://api.jikan.moe/v4/anime?status=airing&type=ova';
|
||||
const special_url = 'https://api.jikan.moe/v4/anime?status=airing&type=special';
|
@ -1,6 +1,8 @@
|
||||
import 'package:anim_search/constants.dart';
|
||||
import 'package:anim_search/models/anime_model.dart';
|
||||
import 'package:anim_search/models/home_card_model.dart';
|
||||
import 'package:anim_search/models/recommendation_model.dart';
|
||||
import 'package:anim_search/types/category_type.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
@ -13,9 +15,30 @@ class DataProvider with ChangeNotifier {
|
||||
late int genreId;
|
||||
late AnimeModel animeData = AnimeModel();
|
||||
|
||||
Future<void> getHomeData({String category = 'airing'}) async {
|
||||
// final String url = 'https://api.jikan.moe/v4/anime/1/$category';
|
||||
final String url = 'https://api.jikan.moe/v4/anime?status=airing';
|
||||
Future<void> getHomeData({CategoryType category = CategoryType.top}) async {
|
||||
final String url;
|
||||
|
||||
switch (category) {
|
||||
case CategoryType.top:
|
||||
url = top_url;
|
||||
break;
|
||||
case CategoryType.upcoming:
|
||||
url = upcoming_url;
|
||||
break;
|
||||
case CategoryType.series:
|
||||
url = series_url;
|
||||
break;
|
||||
case CategoryType.movie:
|
||||
url = movie_url;
|
||||
break;
|
||||
case CategoryType.ova:
|
||||
url = ova_url;
|
||||
break;
|
||||
case CategoryType.special:
|
||||
url = special_url;
|
||||
break;
|
||||
}
|
||||
|
||||
try {
|
||||
isLoading = true;
|
||||
isError = false;
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'package:anim_search/providers/data_provider.dart';
|
||||
import 'package:anim_search/types/category_type.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@ -10,7 +11,7 @@ class ErrorScreen extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _ErrorScreenState extends State<ErrorScreen> {
|
||||
Future<void> getData(String category) async {
|
||||
Future<void> getData(CategoryType category) async {
|
||||
await Provider.of<DataProvider>(context, listen: false)
|
||||
.getHomeData(category: category);
|
||||
}
|
||||
@ -50,7 +51,7 @@ class _ErrorScreenState extends State<ErrorScreen> {
|
||||
),
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(
|
||||
foregroundColor: Colors.white,
|
||||
foregroundColor: Colors.white,
|
||||
backgroundColor: Colors.orange,
|
||||
padding: EdgeInsets.symmetric(horizontal: 25),
|
||||
shape: RoundedRectangleBorder(
|
||||
@ -62,7 +63,7 @@ class _ErrorScreenState extends State<ErrorScreen> {
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
print('refreshed');
|
||||
getData('airing');
|
||||
getData(CategoryType.top);
|
||||
});
|
||||
})
|
||||
],
|
||||
|
@ -1,5 +1,6 @@
|
||||
import 'package:anim_search/providers/data_provider.dart';
|
||||
import 'package:anim_search/screens/anime_grid_screen.dart';
|
||||
import 'package:anim_search/types/category_type.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:material_floating_search_bar/material_floating_search_bar.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@ -12,7 +13,7 @@ class HomeScreen extends StatefulWidget {
|
||||
class _HomeScreenState extends State<HomeScreen> {
|
||||
int _selectedIndex = 0;
|
||||
|
||||
Future<void> getData(String category) async {
|
||||
Future<void> getData(CategoryType category) async {
|
||||
await Provider.of<DataProvider>(context, listen: false)
|
||||
.getHomeData(category: category);
|
||||
}
|
||||
@ -21,7 +22,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
Provider.of<DataProvider>(context, listen: false).searchData(query);
|
||||
}
|
||||
|
||||
Widget _buttonBuilder(String name, int myIndex, String category) {
|
||||
Widget _buttonBuilder(String name, int myIndex, CategoryType category) {
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
setState(() {
|
||||
@ -69,7 +70,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
onFocusChanged: (isFocused) {
|
||||
if (!isFocused) {
|
||||
setState(() {
|
||||
getData('airing');
|
||||
getData(CategoryType.top);
|
||||
});
|
||||
}
|
||||
},
|
||||
@ -85,7 +86,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
_selectedIndex = 0;
|
||||
getData('airing');
|
||||
getData(CategoryType.top);
|
||||
});
|
||||
}),
|
||||
),
|
||||
@ -106,12 +107,12 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
padding: EdgeInsets.symmetric(horizontal: 15),
|
||||
scrollDirection: Axis.horizontal,
|
||||
children: [
|
||||
_buttonBuilder('Top', 0, 'airing'),
|
||||
_buttonBuilder('Upcoming', 1, 'upcoming'),
|
||||
_buttonBuilder('Series', 2, 'tv'),
|
||||
_buttonBuilder('Movies', 3, 'movie'),
|
||||
_buttonBuilder('OVA', 4, 'ova'),
|
||||
_buttonBuilder('Special Release', 5, 'special'),
|
||||
_buttonBuilder('Top', 0, CategoryType.top),
|
||||
_buttonBuilder('Upcoming', 1, CategoryType.upcoming),
|
||||
_buttonBuilder('Series', 2, CategoryType.series),
|
||||
_buttonBuilder('Movies', 3, CategoryType.movie),
|
||||
_buttonBuilder('OVA', 4, CategoryType.ova),
|
||||
_buttonBuilder('Special Release', 5, CategoryType.special),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
1
lib/types/category_type.dart
Normal file
1
lib/types/category_type.dart
Normal file
@ -0,0 +1 @@
|
||||
enum CategoryType { top, upcoming, series, movie, ova, special }
|
Reference in New Issue
Block a user