Fixed all homescreen requests to work with API v4

This commit is contained in:
Simon Buckner
2023-01-06 01:23:40 -06:00
parent 17717a3b0e
commit 0fb44fda4d
5 changed files with 48 additions and 16 deletions

6
lib/constants.dart Normal file
View 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';

View File

@ -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;

View File

@ -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);
});
})
],

View File

@ -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),
],
),
),

View File

@ -0,0 +1 @@
enum CategoryType { top, upcoming, series, movie, ova, special }