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호출 성공");