Skip to content

Commit

Permalink
Merge pull request #3 from pratikbaid3/development
Browse files Browse the repository at this point in the history
Fixed pagination issue
  • Loading branch information
pratikbaid3 authored Jul 23, 2021
2 parents a065147 + 31e1cbf commit 70c0af6
Show file tree
Hide file tree
Showing 18 changed files with 271 additions and 406 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/dart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name: Flutter CI

on:
push:
branches: [ main ]
branches: [ main , development ]
pull_request:
branches: [ main ]

Expand All @@ -24,7 +24,7 @@ jobs:
with:
flutter-version: '2.2.2'
- run: flutter pub get
# - run: flutter analyze
# - run: flutter analyze
- run: flutter format -n --set-exit-if-changed .
- run: flutter build apk

Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ android {
applicationId "co.turingcreatives.game_trophy_manager"
minSdkVersion 19
targetSdkVersion 30
versionCode '9'.toInteger()
versionName '5.0.3'
versionCode '10'.toInteger()
versionName '6.0.0'
// testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
// multiDexEnabled true
}
Expand Down
Binary file modified android/app/release/app-release.aab
Binary file not shown.
103 changes: 26 additions & 77 deletions lib/Pages/all_ps4_games_page.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:game_trophy_manager/Model/game_model.dart';
import 'package:game_trophy_manager/Widgets/ps4_game_card.dart';
import 'package:game_trophy_manager/Provider/game_provider.dart';
import 'package:game_trophy_manager/Provider/ps4_game_provider.dart';
import 'package:game_trophy_manager/Utilities/colors.dart';
import 'package:infinite_scroll_pagination/infinite_scroll_pagination.dart';
import 'package:provider/provider.dart';

class AllPS4GamesPage extends StatefulWidget {
Expand All @@ -13,10 +14,10 @@ class AllPS4GamesPage extends StatefulWidget {
}

class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
final PagingController<int, GameModel> _pagingController =
PagingController(firstPageKey: 1);
TextEditingController searchController = new TextEditingController();
bool isSearchIcon = true;
int currentPage;
int nextPage;
String searchKeyword = '';

@override
Expand All @@ -29,24 +30,20 @@ class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
void initState() {
// TODO: implement initState
super.initState();
currentPage = 1;
nextPage = currentPage + 1;
_scrollController.addListener(() {
if (_scrollController.position.pixels ==
_scrollController.position.maxScrollExtent) {
int itemCount =
Provider.of<GameProvider>(context, listen: false).games.length;
if (itemCount == 30 * currentPage) {
setState(() {
currentPage += 1;
nextPage += 1;
});
}
}
_pagingController.addPageRequestListener((pageKey) {
Provider.of<PS4GameProvider>(context, listen: false).getGame(
pagingController: _pagingController,
pageKey: pageKey,
search: searchKeyword);
});
}

ScrollController _scrollController = new ScrollController();
@override
void didChangeDependencies() {
// TODO: implement didChangeDependencies

super.didChangeDependencies();
}

@override
Widget build(BuildContext context) {
Expand All @@ -63,9 +60,8 @@ class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
onSubmitted: (value) {
setState(() {
searchKeyword = searchController.text;
currentPage = 1;
nextPage = currentPage + 1;
isSearchIcon = false;
_pagingController.refresh();
});
},
cursorColor: primaryAccentColor,
Expand All @@ -77,9 +73,8 @@ class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
FocusScope.of(context).unfocus();
setState(() {
searchKeyword = searchController.text;
currentPage = 1;
nextPage = currentPage + 1;
isSearchIcon = false;
_pagingController.refresh();
});
},
icon: Icon(
Expand All @@ -92,10 +87,9 @@ class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
FocusScope.of(context).unfocus();
setState(() {
isSearchIcon = true;
currentPage = 1;
nextPage = currentPage + 1;
searchController.text = '';
searchKeyword = searchController.text;
_pagingController.refresh();
});
//TODO Execute search
},
Expand Down Expand Up @@ -133,58 +127,13 @@ class _AllPS4GamesPageState extends State<AllPS4GamesPage> {
height: hp * 0.02,
),
Expanded(
child: FutureBuilder(
future: Provider.of<GameProvider>(context)
.getGame(page: currentPage, search: searchKeyword),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (Provider.of<GameProvider>(context).games.length ==
0) {
return Container(
height: hp * 0.6,
child: Center(
child: SpinKitFadingCircle(
color: primaryAccentColor,
size: 60.0,
),
),
);
}
return ListView.builder(
controller: _scrollController,
primary: false,
shrinkWrap: true,
padding: EdgeInsets.only(top: 10, left: 2, right: 2),
itemCount:
Provider.of<GameProvider>(context).games.length,
itemBuilder: (BuildContext context, int index) {
if (index ==
Provider.of<GameProvider>(context)
.games
.length -
1 &&
Provider.of<GameProvider>(context).games.length ==
currentPage * 30) {
return Column(
children: [
PS4GameCard(
index: index,
),
SizedBox(
height: 20,
),
CupertinoActivityIndicator(),
SizedBox(
height: 50,
)
],
);
}
return PS4GameCard(
index: index,
);
},
);
},
child: PagedListView<int, GameModel>(
pagingController: _pagingController,
builderDelegate: PagedChildBuilderDelegate<GameModel>(
itemBuilder: (context, item, index) => PS4GameCard(
game: item,
),
),
),
),
],
Expand Down
5 changes: 3 additions & 2 deletions lib/Pages/dashboard.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_neumorphic/flutter_neumorphic.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
import 'package:game_trophy_manager/Provider/guide_provider.dart';
import 'package:game_trophy_manager/Provider/ps4_guide_provider.dart';
import 'package:game_trophy_manager/Provider/internal_db_provider.dart';
import 'package:game_trophy_manager/Router/router_constant.dart';
import 'package:game_trophy_manager/Utilities/colors.dart';
Expand Down Expand Up @@ -59,7 +59,8 @@ class _DashboardState extends State<Dashboard> {
builder: (BuildContext context) {
return GestureDetector(
onTap: () {
Provider.of<GuideProvider>(context, listen: false)
Provider.of<PS4GuideProvider>(context,
listen: false)
.clearGuideList();
Navigator.of(context)
.pushNamed(guidePageRoute, arguments: i)
Expand Down
4 changes: 2 additions & 2 deletions lib/Pages/my_games_page.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
import 'package:game_trophy_manager/Provider/guide_provider.dart';
import 'package:game_trophy_manager/Provider/ps4_guide_provider.dart';
import 'package:game_trophy_manager/Provider/internal_db_provider.dart';
import 'package:game_trophy_manager/Router/router_constant.dart';
import 'package:game_trophy_manager/Utilities/colors.dart';
Expand Down Expand Up @@ -59,7 +59,7 @@ class _MyGamesPageState extends State<MyGamesPage> {
margin: new EdgeInsets.symmetric(vertical: 10.0),
child: GestureDetector(
onTap: () {
Provider.of<GuideProvider>(context,
Provider.of<PS4GuideProvider>(context,
listen: false)
.clearGuideList();
Navigator.of(context)
Expand Down
20 changes: 11 additions & 9 deletions lib/Pages/guide_page.dart → lib/Pages/ps4_guide_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@ import 'package:flutter_neumorphic/flutter_neumorphic.dart';
import 'package:flutter_spinkit/flutter_spinkit.dart';
import 'package:game_trophy_manager/Model/game_guide_model.dart';
import 'package:game_trophy_manager/Model/game_model.dart';
import 'package:game_trophy_manager/Provider/guide_provider.dart';
import 'package:game_trophy_manager/Provider/ps4_guide_provider.dart';
import 'package:game_trophy_manager/Provider/internal_db_provider.dart';
import 'package:game_trophy_manager/Utilities/colors.dart';
import 'package:game_trophy_manager/Widgets/ps4_guide_card.dart';
import 'package:game_trophy_manager/Widgets/snack_bar.dart';
import 'package:provider/provider.dart';

// ignore: must_be_immutable
class GuidePage extends StatefulWidget {
class Ps4GuidePage extends StatefulWidget {
GameModel game;

GuidePage({@required this.game});
Ps4GuidePage({@required this.game});

@override
_GuidePageState createState() => _GuidePageState();
_Ps4GuidePageState createState() => _Ps4GuidePageState();
}

class _GuidePageState extends State<GuidePage> {
class _Ps4GuidePageState extends State<Ps4GuidePage> {
bool isExpanded = false;
bool isGameAdded = false;

Expand Down Expand Up @@ -124,10 +124,11 @@ class _GuidePageState extends State<GuidePage> {
height: 10,
),
FutureBuilder(
future: Provider.of<GuideProvider>(context)
future: Provider.of<PS4GuideProvider>(context)
.getGuide(gameName: widget.game.gameName),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (Provider.of<GuideProvider>(context).guide.length == 0) {
if (Provider.of<PS4GuideProvider>(context).guide.length ==
0) {
return Container(
height: hp * 0.6,
child: Center(
Expand All @@ -142,11 +143,12 @@ class _GuidePageState extends State<GuidePage> {
primary: false,
shrinkWrap: true,
padding: EdgeInsets.only(top: 10, left: 2, right: 2),
itemCount: Provider.of<GuideProvider>(context).guide.length,
itemCount:
Provider.of<PS4GuideProvider>(context).guide.length,
itemBuilder: (BuildContext context, int index) {
bool isCompleted = false;
bool isStarred = false;
String trophyName = Provider.of<GuideProvider>(context)
String trophyName = Provider.of<PS4GuideProvider>(context)
.guide[index]
.trophyName;
for (GuideModel guide
Expand Down
2 changes: 0 additions & 2 deletions lib/Pages/splash_page.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flutter/material.dart';
import 'package:flare_flutter/flare_actor.dart';
import 'package:game_trophy_manager/Provider/graph_provider.dart';
import 'package:game_trophy_manager/Provider/internal_db_provider.dart';
import 'package:game_trophy_manager/Router/router_constant.dart';
import 'package:game_trophy_manager/Utilities/colors.dart';
Expand All @@ -23,7 +22,6 @@ class _SplashScreenState extends State<SplashScreen> {
Provider.of<InternalDbProvider>(context, listen: false).getAllGamesFromDb();
Provider.of<InternalDbProvider>(context, listen: false)
.getAllTrophiesFromDb();
Provider.of<GraphProvider>(context, listen: false).getAllTrophyDateFromDb();
}

void toDashboard() {
Expand Down
30 changes: 0 additions & 30 deletions lib/Provider/game_provider.dart

This file was deleted.

Loading

0 comments on commit 70c0af6

Please sign in to comment.