diff --git a/lib/features/pet/entities/pet_data_entity.dart b/lib/features/pet/entities/pet_data_entity.dart deleted file mode 100644 index 215c481..0000000 --- a/lib/features/pet/entities/pet_data_entity.dart +++ /dev/null @@ -1,20 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:pets_next_door_flutter/features/pet/data/dto/pet_data_dto.dart'; - -part 'pet_data_entity.freezed.dart'; - -@freezed -class PetDataEntity with _$PetDataEntity { - const PetDataEntity._(); - const factory PetDataEntity({ - required int code, - required String iconImgUrl, - required String text, - }) = _PetDataEntity; - - factory PetDataEntity.fromDto(PetDataDto dto) => PetDataEntity( - code: dto.id, - iconImgUrl: '', - text: dto.name, - ); -} diff --git a/lib/presentation/pages/sos/layouts/sos_post_list_view.dart b/lib/presentation/pages/sos/layouts/sos_post_list_view.dart index cfd52f7..00fb5c4 100644 --- a/lib/presentation/pages/sos/layouts/sos_post_list_view.dart +++ b/lib/presentation/pages/sos/layouts/sos_post_list_view.dart @@ -23,23 +23,30 @@ class _SosPostListView extends HookConsumerWidget with SosPostViewEvent { return () => _scrollController.removeListener(_callBack); }, [_scrollController]); - return PagedListView.separated( - scrollController: _scrollController, - physics: AlwaysScrollableScrollPhysics(), - pagingController: ref.watch(sosPagingControllerProvider), - builderDelegate: PagedChildBuilderDelegate( - itemBuilder: (context, sosPost, index) => PndPostListTile.sosPage( - imageUrl: sosPost.thumbnailUrl, - title: sosPost.title, - dateInfo: - '${sosPost.careStartAt.formatyyMMdd} ~ ${sosPost.careEndAt.formatyyMMdd}', - location: '용답동', - pay: '${sosPost.rewardPer} ${sosPost.reward}'), - ), - separatorBuilder: (context, index) => Divider( - height: 1, - thickness: 1, - color: AppColor.of.gray20, + return RefreshIndicator( + color: AppColor.of.primaryGreen, + displacement: 0, + onRefresh: () => onListRefresh(ref), + child: PagedListView.separated( + pagingController: ref.watch(sosPagingControllerProvider), + scrollController: _scrollController, + physics: AlwaysScrollableScrollPhysics(), + builderDelegate: PagedChildBuilderDelegate( + itemBuilder: (context, sosPost, index) => PndPostListTile.sosPage( + imageUrl: sosPost.thumbnailUrl, + title: sosPost.title, + dateInfo: + '${sosPost.careStartAt.formatyyMMdd} ~ ${sosPost.careEndAt.formatyyMMdd}', + location: '용답동', + pay: '${sosPost.rewardPer} ${sosPost.reward}'), + firstPageProgressIndicatorBuilder: (context) => PndLoadingIndicator(), + newPageProgressIndicatorBuilder: (context) => PndLoadingIndicator(), + ), + separatorBuilder: (context, index) => Divider( + height: 1, + thickness: 1, + color: AppColor.of.gray20, + ), ), ); } diff --git a/lib/presentation/pages/sos/providers/sos_post_paging_controller_provider.dart b/lib/presentation/pages/sos/providers/sos_post_paging_controller_provider.dart index e32f556..8e483a9 100644 --- a/lib/presentation/pages/sos/providers/sos_post_paging_controller_provider.dart +++ b/lib/presentation/pages/sos/providers/sos_post_paging_controller_provider.dart @@ -6,7 +6,7 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'sos_post_paging_controller_provider.g.dart'; -const _pagingSize = 20; +const _pagingSize = 10; @riverpod class SosPagingController extends _$SosPagingController { diff --git a/lib/presentation/pages/sos/sos_post_view.dart b/lib/presentation/pages/sos/sos_post_view.dart index b0f2f35..4ea05e6 100644 --- a/lib/presentation/pages/sos/sos_post_view.dart +++ b/lib/presentation/pages/sos/sos_post_view.dart @@ -14,6 +14,7 @@ import 'package:pets_next_door_flutter/presentation/pages/sos/sos_post_event.dar import 'package:pets_next_door_flutter/presentation/widgets/button/radio_button.dart'; import 'package:pets_next_door_flutter/presentation/widgets/dropdown/dropdown_button.dart'; import 'package:pets_next_door_flutter/presentation/widgets/dropdown/dropdown_item.dart'; +import 'package:pets_next_door_flutter/presentation/widgets/indicator/loading_indicator.dart'; import 'package:pets_next_door_flutter/presentation/widgets/list_tile/post_list_tile.dart'; part 'layouts/pet_filter.dart'; @@ -38,9 +39,8 @@ class SosPostView extends StatelessWidget { ); } - Container _buildFilters() { - return Container( - height: 50, + Padding _buildFilters() { + return Padding( padding: const EdgeInsets.symmetric(horizontal: 24), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, diff --git a/lib/presentation/widgets/indicator/loading_indicator.dart b/lib/presentation/widgets/indicator/loading_indicator.dart new file mode 100644 index 0000000..3bb9de5 --- /dev/null +++ b/lib/presentation/widgets/indicator/loading_indicator.dart @@ -0,0 +1,21 @@ +import 'package:flutter/material.dart'; +import 'package:pets_next_door_flutter/core/constants/colors.dart'; + +class PndLoadingIndicator extends StatelessWidget { + const PndLoadingIndicator({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Center( + child: SizedBox( + height: 35, + width: 35, + child: CircularProgressIndicator( + color: AppColor.of.primaryGreen, + ), + ), + ); + } +}