From 67fc7fffd7604e9a9a9b205ad6a02167a1d24fca Mon Sep 17 00:00:00 2001 From: kimwest00 Date: Tue, 17 Oct 2023 16:13:32 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20#35=205-10-2=20pagination=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=EB=B0=8F=20=EB=A1=9C=EC=A7=81=20=EB=B3=80=EA=B2=BD=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=EB=AA=85=20=EB=B3=80=EA=B2=BD=20index=201?= =?UTF-8?q?=EC=94=A9=20=EB=B3=80=EA=B2=BD=20=EB=A7=90=EA=B3=A0=20param?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EC=A0=84=EB=8B=AC=EB=90=9C=20index=20?= =?UTF-8?q?=EA=B0=92=20=EC=9D=B4=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/burning_match_controller.dart | 22 +++++++---- .../buring_match/view/burning_match_view.dart | 37 ++++++++++++------- .../home/controller/home_controller.dart | 5 ++- lib/provider/api/flame_api.dart | 2 +- 4 files changed, 43 insertions(+), 23 deletions(-) diff --git a/lib/modules/buring_match/controller/burning_match_controller.dart b/lib/modules/buring_match/controller/burning_match_controller.dart index 9e66da93..58b0af3c 100644 --- a/lib/modules/buring_match/controller/burning_match_controller.dart +++ b/lib/modules/buring_match/controller/burning_match_controller.dart @@ -5,7 +5,9 @@ import 'package:match/model/match_pay/match_pay.dart'; import 'package:match/provider/api/flame_api.dart'; import '../../../provider/api/project_api.dart'; +import '../../../provider/api/util/global_api_field.dart'; import '../../../util/const/global_mock_data.dart'; +import '../../../util/const/style/global_logger.dart'; enum MATCH_STATUS { //검색에서 접근 @@ -27,12 +29,18 @@ class BurningMatchController extends GetxController { ///* mapIndexed 사용불가로 index 대체 변수 RxList flameHistories = [].obs; - // Future getMoreProject(int index) async { - // if (!DonationApi.getDonationHistoryIsLast) { - // matchHistories.addAll( - // await DonationApi.getDonationHistory(donationId: id, page: index)); - // } - // } + ///

Listview builder에서 호출하는 pagination 추가 호출 함수

+ ///* 총 데이터 수와 비교하여, 페이지를 더 늘릴수있다면 api 호출, 그렇지 않다면 호출 X + Future getMoreFlameHistory(int index) async { + logger.d( + "2: 총 페이지수 : ${FlameApi.detailFlameBottom.totalCnt ~/ PAGINATION_SIZE}, 불러오고자 하는 페이지: ${index}"); + if (!(FlameApi.burningFlame.totalCnt ~/ PAGINATION_SIZE >= + index) && + !FlameApi.burningFlame.isLast) { + FlameApi.burningFlame.currentpage = index; + flameHistories.addAll(await FlameApi.getFlameDetailBottomList(donationId: id,getMore: true)); + } + } @override void onInit() async { @@ -41,6 +49,6 @@ class BurningMatchController extends GetxController { flameDetail.value = await FlameApi.getDetailFlameTop(donationId: id) ?? tmpFlameDetail; ///*하단 데이터 init - flameHistories.assignAll( await FlameApi.getFlameDetailBottom(donationId: id)); + flameHistories.assignAll( await FlameApi.getFlameDetailBottomList(donationId: id)); } } diff --git a/lib/modules/buring_match/view/burning_match_view.dart b/lib/modules/buring_match/view/burning_match_view.dart index 7b6cfd23..8a892ab3 100644 --- a/lib/modules/buring_match/view/burning_match_view.dart +++ b/lib/modules/buring_match/view/burning_match_view.dart @@ -12,8 +12,10 @@ import 'package:match/util/const/style/global_color.dart'; import 'package:match/util/const/style/global_text_styles.dart'; import 'package:timeline_tile_nic/timeline_tile.dart'; +import '../../../provider/api/util/global_api_field.dart'; import '../../../util/components/global_app_bar.dart'; import '../../../util/const/global_variable.dart'; +import '../../../util/const/style/global_logger.dart'; class BurningMatchScreen extends GetView { const BurningMatchScreen({super.key}); @@ -37,7 +39,7 @@ class BurningMatchScreen extends GetView { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox( - width:255.w, + width: 255.w, child: Text( controller.flameDetail.value.inherenceName, style: AppTextStyles.T1Bold18, @@ -81,24 +83,33 @@ class BurningMatchScreen extends GetView { //매치 기록 제목 Padding( - padding: EdgeInsets.symmetric(vertical: 17.h).copyWith(bottom: 0.h), + padding: EdgeInsets.symmetric(vertical: 17.h) + .copyWith(bottom: 0.h), child: Text( "매치 기록", style: AppTextStyles.T1Bold15, ), ), ListView.builder( - physics: const NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: controller.flameHistories.length, - itemBuilder: (context, index) { - final history = controller.flameHistories[index]; - return MatchRecord( - title: history.histories, - date: history.historyDate, - imgList: history.donationHistoryImages ?? []); - }, - ), + physics: const NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: controller.flameHistories.length, + itemBuilder: (context, index) { + logger.d(index); + if (index % (PAGINATION_SIZE - 1) == 0 && index != 0) { + logger.d("1. getMoreFlame 호출!"); + Future.wait({ + controller.getMoreFlameHistory( + index ~/ (PAGINATION_SIZE - 1)) + }); + } + final history = controller.flameHistories[index]; + return MatchRecord( + title: history.histories, + date: history.historyDate, + imgList: history.donationHistoryImages ?? []); + }, + ), // 매치기록 ], ), diff --git a/lib/modules/home/controller/home_controller.dart b/lib/modules/home/controller/home_controller.dart index 5cfa3561..d91495b3 100644 --- a/lib/modules/home/controller/home_controller.dart +++ b/lib/modules/home/controller/home_controller.dart @@ -16,11 +16,12 @@ class HomeController extends GetxController { ///* 총 데이터 수와 비교하여, 페이지를 더 늘릴수있다면 api 호출, 그렇지 않다면 호출 X Future getMoreFlame(int index) async { logger.d( - "2: 총 페이지수 : ${FlameApi.burningFlame.totalCnt ~/ PAGINATION_SIZE}, 불러오고자 하는 페이지: ${FlameApi.burningFlame.currentpage + 1}"); + "2: 총 페이지수 : ${FlameApi.burningFlame.totalCnt ~/ PAGINATION_SIZE}, 불러오고자 하는 페이지: ${index}"); if (!(FlameApi.burningFlame.totalCnt ~/ PAGINATION_SIZE >= FlameApi.burningFlame.currentpage + 1) && !FlameApi.burningFlame.isLast) { - FlameApi.burningFlame.currentpage++; + FlameApi.burningFlame.currentpage = index; + flameList.addAll(await FlameApi.getBurningFlameList(getMore: true)); } } diff --git a/lib/provider/api/flame_api.dart b/lib/provider/api/flame_api.dart index d2b9bbb4..2b6f2cc6 100644 --- a/lib/provider/api/flame_api.dart +++ b/lib/provider/api/flame_api.dart @@ -56,7 +56,7 @@ class FlameApi { ///

5-10-2 API | 상세 - 불타는 매치 상세 - 하단조회

///* pagination - static Future> getFlameDetailBottom( + static Future> getFlameDetailBottomList( {required int donationId, bool getMore = false}) async { try { logger.d("api호출 성공");