Browse Source

update community

glglove 2 months ago
parent
commit
26d2c3366b
61 changed files with 1175 additions and 779 deletions
  1. 4 4
      packages/cpt_community/lib/components/garage_card.dart
  2. 1 1
      packages/cpt_community/lib/components/newsfeed_card_content.dart
  3. 82 31
      packages/cpt_community/lib/modules/community/community_page.dart
  4. 1 1
      packages/cpt_community/lib/modules/community/community_state.dart
  5. 114 40
      packages/cpt_community/lib/modules/community/community_vm.dart
  6. 5 3
      packages/cpt_community/lib/modules/community/customSilverHeaderTabs.dart
  7. 4 10
      packages/cpt_community/lib/modules/community/following/following_page.dart
  8. 25 13
      packages/cpt_community/lib/modules/community/following/following_vm.dart
  9. 1 1
      packages/cpt_community/lib/modules/community/foryou/foryou_page.dart
  10. 20 133
      packages/cpt_community/lib/modules/community/foryou/foryou_vm.dart
  11. 5 1
      packages/cpt_community/lib/modules/community/news/news_page.dart
  12. 29 11
      packages/cpt_community/lib/modules/community/news/news_vm.dart
  13. 1 0
      packages/cpt_community/lib/modules/garage/for_rent/for_rent_page.dart
  14. 18 39
      packages/cpt_community/lib/modules/garage/for_rent/for_rent_vm.dart
  15. 2 0
      packages/cpt_community/lib/modules/garage/for_sale/for_sale_page.dart
  16. 26 92
      packages/cpt_community/lib/modules/garage/for_sale/for_sale_vm.dart
  17. 77 42
      packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_page.dart
  18. 92 59
      packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_vm.dart
  19. 3 3
      packages/cpt_community/lib/respository/common_garage.dart
  20. 1 1
      packages/cpt_community/lib/router/page/community_page_router.gr.dart
  21. 3 0
      packages/cpt_community/pubspec.yaml
  22. 1 1
      packages/cpt_property/lib/modules/property/page/property_page.dart
  23. 3 0
      packages/cs_domain/lib/entity/garage_sale_rent_detail_entity.dart
  24. 33 12
      packages/cs_domain/lib/entity/garage_sale_rent_entity.dart
  25. 178 87
      packages/cs_domain/lib/generated/json/base/json_convert_content.dart
  26. 31 14
      packages/cs_domain/lib/generated/json/facility_book_entity.g.dart
  27. 40 20
      packages/cs_domain/lib/generated/json/facility_page_entity.g.dart
  28. 14 6
      packages/cs_domain/lib/generated/json/feedback_detail_entity.g.dart
  29. 7 3
      packages/cs_domain/lib/generated/json/feedback_list_entity.g.dart
  30. 46 23
      packages/cs_domain/lib/generated/json/form_content_entity.g.dart
  31. 2 1
      packages/cs_domain/lib/generated/json/form_detail_entity.g.dart
  32. 2 1
      packages/cs_domain/lib/generated/json/form_list_entity.g.dart
  33. 4 2
      packages/cs_domain/lib/generated/json/form_option_entity.g.dart
  34. 12 6
      packages/cs_domain/lib/generated/json/form_submitted_entity.g.dart
  35. 9 4
      packages/cs_domain/lib/generated/json/form_submitted_page_entity.g.dart
  36. 24 5
      packages/cs_domain/lib/generated/json/garage_sale_rent_detail_entity.g.dart
  37. 92 33
      packages/cs_domain/lib/generated/json/garage_sale_rent_entity.g.dart
  38. 4 2
      packages/cs_domain/lib/generated/json/myfollowing_list_entity.g.dart
  39. 15 7
      packages/cs_domain/lib/generated/json/myposts_newsfeed_entity.g.dart
  40. 4 2
      packages/cs_domain/lib/generated/json/myposts_sale_rent_entity.g.dart
  41. 4 2
      packages/cs_domain/lib/generated/json/newsfeed_comment_publish_entity.g.dart
  42. 28 13
      packages/cs_domain/lib/generated/json/newsfeed_detail_entity.g.dart
  43. 19 9
      packages/cs_domain/lib/generated/json/newsfeed_following_entity.g.dart
  44. 11 5
      packages/cs_domain/lib/generated/json/newsfeed_foryou_entity.g.dart
  45. 10 5
      packages/cs_domain/lib/generated/json/newsfeed_news_entity.g.dart
  46. 4 2
      packages/cs_domain/lib/generated/json/notice_board_announ_entity.g.dart
  47. 4 2
      packages/cs_domain/lib/generated/json/notice_board_documents_entity.g.dart
  48. 4 2
      packages/cs_domain/lib/generated/json/notice_board_event_entity.g.dart
  49. 4 2
      packages/cs_domain/lib/generated/json/property_news_entity.g.dart
  50. 9 4
      packages/cs_domain/lib/generated/json/property_sale_rent_entity.g.dart
  51. 33 15
      packages/cs_domain/lib/generated/json/user_me_entity.g.dart
  52. 6 3
      packages/cs_domain/lib/generated/json/visitor_page_entity.g.dart
  53. BIN
      packages/cs_resources/assets/community/garage_sale.webp
  54. BIN
      packages/cs_resources/assets/community/nes_feed.webp
  55. BIN
      packages/cs_resources/assets/community/news.webp
  56. BIN
      packages/cs_resources/assets/property/ioan.webp
  57. BIN
      packages/cs_resources/assets/property/news.webp
  58. BIN
      packages/cs_resources/assets/property/rent.webp
  59. BIN
      packages/cs_resources/assets/property/sale.webp
  60. 1 1
      packages/cs_resources/lib/generated/assets.dart
  61. 3 0
      packages/cs_widgets/lib/load_state_layout.dart

+ 4 - 4
packages/cpt_community/lib/components/garage_card.dart

@@ -56,7 +56,7 @@ class GarageCard extends StatelessWidget {
     List? card_resources = itemObj.getValue<List>("resources", [])?? [];
     String card_img = card_resources.length>0? card_resources[0]:"";
     String card_title = itemObj.getValue("title", "");
-    String card_price = itemObj.getValue("price", "");
+    int card_price = itemObj.getValue("price", "");
     String card_created_at = itemObj.getValue("created_at", "");
     Map<String, dynamic>? card_account = itemObj.getValue<Map<String,dynamic>>("account", null);
     String card_avatar = card_account?['avatar']?? "";
@@ -116,7 +116,7 @@ class GarageCard extends StatelessWidget {
             children: [
               Expanded(
                 child: MyTextView(
-                  card_price,
+                  '$card_price',
                   maxLines: 1,
                   isTextEllipsis: true,
                   textAlign: TextAlign.start,
@@ -237,8 +237,8 @@ class CollectionWidget extends HookConsumerWidget {
     ).onTap(() async{
         // Log.d("点击了收藏按钮  ${isCollectionState.value}");
         // ToastEngine.show("点击了收藏按钮 ${isCollectionState.value}");
-        bool result = await onClickColleciotn?.call(isCollectionState.value);
-        if(result){
+        final result = await onClickColleciotn?.call(isCollectionState.value);
+        if(result !=null && result){
           isCollectionState.value = !isCollectionState.value;
           collectionNumState.value = (collectionNumState.value + (isCollectionState.value? 1: -1))<0? 0: (collectionNumState.value + (isCollectionState.value? 1: -1));
           if(isCollectionState.value){

+ 1 - 1
packages/cpt_community/lib/components/newsfeed_card_content.dart

@@ -57,7 +57,7 @@ class NewsFeedCardContent extends StatelessWidget {
           final maxHeight = constraints.maxHeight;
           final minHeight = constraints.minHeight;
           final maxWidth = constraints.maxWidth;
-          Log.d("---maxHeight-----$maxHeight-- $minHeight  $maxWidth--");
+          // Log.d("---maxHeight-----$maxHeight-- $minHeight  $maxWidth--");
           return Container(
             width: double.infinity,
             // color: Colors.red,

+ 82 - 31
packages/cpt_community/lib/modules/community/community_page.dart

@@ -1,5 +1,6 @@
 
 import 'package:cs_resources/generated/assets.dart';
+import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -23,12 +24,11 @@ import 'community_vm.dart';
 import 'customSilverHeaderTabs.dart';
 
 final tabsRouterKey = GlobalKey<AutoTabsRouterState>();
-final ScrollController _scrollController = useScrollController();
-
-
+final GlobalKey<ExtendedNestedScrollViewState> extendedNestedScrollViewKey =
+GlobalKey<ExtendedNestedScrollViewState>();
 @RoutePage()
-class CommunityPage extends HookConsumerWidget {
-    const CommunityPage({Key? key}) : super(key: key);
+class CommunityPage extends HookConsumerWidget with WidgetsBindingObserver {
+    CommunityPage({Key? key}) : super(key: key);
 
     //启动当前页面
     static void startInstance({BuildContext? context}) {
@@ -39,11 +39,61 @@ class CommunityPage extends HookConsumerWidget {
       }
     }
 
+    bool _isKeyboardVisible = false;
+
+    void handlerNestedScrollViewScroll({double? outerOffset, double? innerOffset, bool? isOuterScrollAnimated=false, bool? isInnerScrollAnimated=false}){
+
+      if(outerOffset !=null){
+        if(isOuterScrollAnimated!){
+          extendedNestedScrollViewKey.currentState?.outerController.animateTo(
+            outerOffset,
+            duration: const Duration(seconds: 1),
+            curve: Curves.easeIn,
+          );
+        }else {
+          extendedNestedScrollViewKey.currentState?.outerController.jumpTo(
+            outerOffset,
+          );
+        }
+      }
+
+      if(innerOffset !=null){
+        extendedNestedScrollViewKey.currentState?.innerPositions.forEach((position) {
+          if(isInnerScrollAnimated!){
+            position.animateTo(innerOffset,
+                duration: Duration(seconds: 1), curve: Curves.easeIn);
+          }else {
+            position.jumpTo(innerOffset);
+          }
+        });
+      }
+    }
+
+    @override
+    void didChangeMetrics() {
+      final bottomInset = WidgetsBinding.instance.window.viewInsets.bottom;
+      final newValue = bottomInset > 0.0;
+      if (_isKeyboardVisible != newValue) {
+          _isKeyboardVisible = newValue;
+        if (_isKeyboardVisible) {
+          handlerNestedScrollViewScroll(innerOffset: 0.0,);
+          print("键盘已显示");
+        } else {
+          WidgetsBinding.instance.removeObserver(this);
+          print("键盘已隐藏");
+        }
+      }
+    }
+
     @override
     Widget build(BuildContext context, WidgetRef ref) {
         final vm = ref.read(communityVmProvider.notifier);
         final state = ref.watch(communityVmProvider);
 
+        useEffect(() {
+          // 监听窗口
+          WidgetsBinding.instance.addObserver(this);
+        }, []);
 
         useEffect((){
           Log.d("CommunityPage initState");
@@ -52,19 +102,13 @@ class CommunityPage extends HookConsumerWidget {
             if(tabsRouterKey.currentState?.controller != null){
               tabsRouterKey.currentState?.controller?.addListener((){
                 vm.tabsRouterChange();
-
-                // _scrollController.animateTo(
-                //   // _scrollController.position.maxScrollExtent,
-                //   100,
-                //   duration: Duration(milliseconds: 300),
-                //   curve: Curves.easeOut,
-                // );
               });
             }
           });
 
           return (){
             Log.d("CommunityPage dispose");
+            WidgetsBinding.instance.removeObserver(this);
             tabsRouterKey.currentState?.controller?.removeListener(vm.tabsRouterChange);
           };
         },[]);
@@ -72,6 +116,7 @@ class CommunityPage extends HookConsumerWidget {
         return Scaffold(
             appBar: MyAppBar.searchAppBar(
               context,
+              value: vm.getCurrentQueryParams('keyword'),
               actions: [
                  const MyAssetImage(
                   Assets.communityLikeActive,
@@ -92,26 +137,28 @@ class CommunityPage extends HookConsumerWidget {
                 const SizedBox(width: 15),
               ],
               backgroundColor: context.appColors.backgroundWhite,
+              onSearch: (value) {
+                vm.handlerSearch(value);
+              }
             ),
           backgroundColor: context.appColors.backgroundDefault,
-          body:  NestedScrollView(
-            controller: _scrollController,
+          body:  ExtendedNestedScrollView(
+            key: extendedNestedScrollViewKey,
+              onlyOneScrollInBody: true,
             headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
               return [
-              // top 组件,转换为 Sliver 组件
-              SliverToBoxAdapter(
-              child: _buildTopSection(context, ref, vm, state),
-              ),
-              // tab 组件,使用 SliverPersistentHeader 实现吸顶
-              // SliverPersistentHeader(
-              //   pinned: true,
-              //   delegate: CustomSliverPersistentHeaderDelegate(
-              //     child: _buildTabsSection(context, ref, tabsRouter, vm, state),
-              //   ),
-              // ),
-              // SliverToBoxAdapter(
-              //   child: _buildPostSection(context, ref, vm, state),
-              // ),
+                // SliverPersistentHeader(
+                //   delegate: CustomSliverPersistentHeaderDelegate(
+                //     maxHeight: 180,
+                //     minHeight: 180,
+                //     child: _buildTopSection(context, ref, vm, state),
+                //   ),
+                //   pinned: false,
+                // ),
+                // top 组件,转换为 Sliver 组件
+                SliverToBoxAdapter(
+                  child: _buildTopSection(context, ref, vm, state),
+                ),
               ];
             },
             body: Column(
@@ -133,7 +180,9 @@ class CommunityPage extends HookConsumerWidget {
                           children: [
                             _buildTabsSection(context, ref, tabsRouter, vm, state),
                             _buildPostSection(context, ref, vm, state),
-                            Expanded(child: child),
+                            Expanded(
+                                child: child
+                            ),
                           ],
                         );
                       },
@@ -141,7 +190,7 @@ class CommunityPage extends HookConsumerWidget {
                 )
               ]
             )
-          ).constrained(height: 5000)
+          )
         );
     }
 
@@ -174,6 +223,7 @@ class CommunityPage extends HookConsumerWidget {
                       height: 70,
                       decoration: BoxDecoration(
                         shape: BoxShape.circle, // 设置为圆形
+                        color: ColorUtils.string2Color("#F0F8FF"),
                         boxShadow: index == curTagIdx ? [
                           BoxShadow(
                             color: context.appColors.tabLightBlueShadow, // 设置阴影颜色
@@ -185,6 +235,7 @@ class CommunityPage extends HookConsumerWidget {
                       child: MyAssetImage(
                         item['icon'],
                         width: MediaQuery.of(context).size.width / topSectionsData.length - 36,
+                        // width: 70,
                         height: 70,
                       ).onTap(() {
                           vm.handlerSwitchNewsfeedOrGaragesale(index, context, null);
@@ -260,7 +311,7 @@ class CommunityPage extends HookConsumerWidget {
           color: Colors.white,
           child: Row(
             children: [
-              // const MyAssetImage(Assets.communityNesFeed, width: 45,height: 45,),
+              // const MyAssetImage(Assets.communityNewsFeed, width: 45,height: 45,),
               MyLoadImage(
                 userConfig.user?.avatar,
                 width: 45,

+ 1 - 1
packages/cpt_community/lib/modules/community/community_state.dart

@@ -29,7 +29,7 @@ class CommunityVmState {
   }) : topSectionsData = topSectionsData?? [
     {
       "title": "News Feed",
-      "icon": Assets.communityNesFeed,
+      "icon": Assets.communityNews,
     },
     {
       "title": "Garage Sale",

+ 114 - 40
packages/cpt_community/lib/modules/community/community_vm.dart

@@ -15,7 +15,6 @@ import 'package:plugin_platform/engine/dialog/dialog_engine.dart';
 import 'package:plugin_platform/engine/sp/sp_util.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
-import 'package:router/path/router_path.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:widgets/dialog/app_custom_dialog.dart';
@@ -24,13 +23,10 @@ import 'package:widgets/my_checkbox_group.dart';
 import '../garage/for_rent/for_rent_vm.dart';
 import '../garage/for_sale/for_sale_vm.dart';
 import '../garage/garagesale_post/garagesale_post_page.dart';
-import '../my_following/my_following_page.dart';
-import '../my_posts/my_posts_page.dart';
 import 'community_page.dart';
 import 'community_pageview_idx_data.dart';
 import 'community_state.dart';
 import 'foryou/foryou_vm.dart';
-import 'news/news_state.dart';
 import 'newsfeed_post/newsfeed_post_page.dart';
 
 part 'community_vm.g.dart';
@@ -45,44 +41,79 @@ class CommunityVm extends _$CommunityVm {
   bool _isSingleSelect = true;
   List<Map<String, dynamic>> _currentSelectedGarageCategory = [];
 
-  Map<String, dynamic>? _queryParams = {
-    'keyword': null,
-    'is_liked': null,
-    'category_id': null
-  };
-
+  Map<int, dynamic> _queryParams = {};
 
+  // 获取当前的查询参数
+  getCurrentQueryParams(String key) {
+    return _queryParams[key];
+  }
 
-// 根据索引获取 Provider
+  // 根据索引获取 Provider
   ProviderBase getProvider(int index) {
     return providerMap[index]!;
   }
 
   CommunityVmState initState() {
+    List<String> newsFeedTabsList = [
+      "News",
+      "Following",
+      "For You",
+    ];
+    List<String> garageSaleTabsList = [
+      "For Sale",
+      "For Rent",
+    ];
+
+    List<String> COMMUNITY_TABS_LIST = [...newsFeedTabsList];
+    COMMUNITY_TABS_LIST.addAll(garageSaleTabsList);
+
+
+    // s.add(garageSaleTabsList);
+    Log.d("COMMUNITY_TABS_LIST   $COMMUNITY_TABS_LIST");
+    // Log.d("s   $newsFeedTabsList");
+    COMMUNITY_TABS_LIST.asMap().forEach((index, value) {
+      _queryParams[index] = {
+        'keyword': null,
+        'is_liked': null,
+        'category_id': null,
+        'category_name': null,
+        'page_view_idx': index,
+        'page_view_name': value,
+      };
+    });
+
     return CommunityVmState(
       currentCategoryIdx: 0,
       currentPageViewIdx: 0,
       lastGarageTabIdx: 0,
       lastNewsfeedTabIdx: 0,
-      newsFeedTabsList: [
-        "News",
-        "Following",
-        "For You",
-      ],
-      garageSaleTabsList: [
-        "For Sale",
-        "For Rent",
-      ],
+      newsFeedTabsList: newsFeedTabsList,
+      garageSaleTabsList: garageSaleTabsList,
     );
   }
 
   @override
   CommunityVmState build(){
+
     // 引入数据仓库
     commonNewsFeedRespositoryInstance = ref.read(commonNewsFeedRespositoryProvider);
     commonGarageRespositoryInstance = ref.read(commonGarageRespositoryProvider);
     final state = initState();
-    // 第一帧渲染完成
+
+    setCurrentPageViewIconStatus();
+    getPageViewVm();
+
+    Log.d("-------------community vm-------------build---------------------");
+    ref.onDispose((){
+      providerMap = {};
+      Log.d("-------------community vm-------------dispose---------------------");
+    });
+    return state;
+  }
+
+  // 搜集pageView 对应的vm
+  void getPageViewVm(){
+    // 每次切换后需要重新获取 一组 pageView的 vm
     WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {
       // 存入 一组 pageView的 vm
       CommunityPageViewIdxData.values.forEach((key, value) {
@@ -104,26 +135,25 @@ class CommunityVm extends _$CommunityVm {
         }
       });
     });
-    Log.d("-------------community vm-------------build---------------------");
-    ref.onDispose((){
-      providerMap = {};
-      Log.d("-------------community vm-------------dispose---------------------");
-    });
-    return state;
   }
 
-  tabsRouterChange(){
-    Log.d("----tabsRouterChange---${tabsRouterKey.currentState?.controller?.activeIndex}-");
-    state = state.copyWith(currentPageViewIdx: tabsRouterKey.currentState?.controller?.activeIndex ?? 0);
-    // 设置当前导航栏的 图标 等状态
+  // 设置当前导航栏的 图标 等状态
+  void setCurrentPageViewIconStatus(){
     WidgetsBinding.instance?.addPostFrameCallback((timeStamp) {
       Log.d("获取当前的导航栏 相关状态resMap444 ${providerMap[state.currentPageViewIdx]} ");
-      Map<String, dynamic> resMap = providerMap[state.currentPageViewIdx]?.getCurrentQueryParams(null);
+      Map<String, dynamic> resMap = providerMap[state.currentPageViewIdx]?.getCurrentQueryParams(null)??{};
       Log.d("获取当前的导航栏 相关状态resMap $resMap ");
-      _queryParams = resMap;
-
+      _queryParams[state.currentPageViewIdx] = resMap;
     });
+  }
+
+  tabsRouterChange(){
+    // 设置当前导航栏的 图标 等状态
+    Log.d("----tabsRouterChange---${tabsRouterKey.currentState?.controller?.activeIndex}-");
+    state = state.copyWith(currentPageViewIdx: tabsRouterKey.currentState?.controller?.activeIndex ?? 0);
 
+    setCurrentPageViewIconStatus();
+    getPageViewVm();
   }
 
   // 点击tab 切换tab
@@ -135,6 +165,7 @@ class CommunityVm extends _$CommunityVm {
     }else {
       tabsRouter.setActiveIndex(state.newsFeedTabsList!.length + tabIndex);
     }
+
   }
 
   // 获取当前pageView 的vm
@@ -254,7 +285,7 @@ class CommunityVm extends _$CommunityVm {
           dialogWidth: MediaQuery.of(context).size.width * 0.8,
           // contentBoxMaxHeight: 350,
           // contentBoxMinHeight: 300,
-          isShowConfirmBtn: state.garageCategoryList!.length > 0 ? true: false,
+          isShowConfirmBtn: garageCategoryList!.length > 0 ? true: false,
           confirmTxt: "Ok",
           messageBuilder: (BuildContext context){
             return Container(
@@ -262,14 +293,14 @@ class CommunityVm extends _$CommunityVm {
               child: Column(
                 mainAxisAlignment: MainAxisAlignment.start,
                 crossAxisAlignment: CrossAxisAlignment.start,
-                children: state.garageCategoryList!.length > 0 ? [
+                children: garageCategoryList!.length > 0 ? [
                   MyCheckboxGroup(
                       isSingleSelect: _isSingleSelect,
                       labelStyle: const TextStyle(
                         fontSize: 16,
                         fontWeight: FontWeight.w500,
                       ),
-                      items: state.garageCategoryList!,
+                      items: garageCategoryList!,
                       defaultSelectedItems: [],
                       onChanged: (List<Map<String, dynamic>> selectedItems){
                         Log.d("----MyCheckboxGroup onChanged  $selectedItems");
@@ -302,12 +333,21 @@ class CommunityVm extends _$CommunityVm {
               ..setCurrentQueryParams({
                 "category_id": categoryId!,
               })
-              ..retryRequest();
+              ..directRefresh();
           },
         )
     );
   }
 
+  // 搜索
+  handlerSearch(String value){
+    providerMap[state.currentPageViewIdx]
+      ..setCurrentQueryParams({
+        "keyword": value,
+      })
+      ..triggerRefresh();
+  }
+
   // 点击了导航栏的 like btn
   handlerClickNavbarLikeBtn(BuildContext? context){
     if(state.currentCategoryIdx ==0){
@@ -320,13 +360,47 @@ class CommunityVm extends _$CommunityVm {
 
     }
 
-    _queryParams?['is_liked'] = !(_queryParams?['is_liked']??false);
+    _queryParams[state.currentPageViewIdx]['is_liked'] = !(_queryParams?['is_liked']??false);
+
+
+    // 控制外层滚动和内层滚动
+    handlerNestedScrollViewScroll();
 
     providerMap[state.currentPageViewIdx]
       ..setCurrentQueryParams({
         "is_liked": _queryParams?['is_liked'],
       })
-      ..retryRequest();
+      ..directRefresh();
+
+    // providerMap[state.currentPageViewIdx].directRefresh();
+  }
+
+  handlerNestedScrollViewScroll({double? outerOffset, double? innerOffset=0.0, bool? isOuterScrollAnimated=false, bool? isInnerScrollAnimated=false}){
+
+    if(outerOffset !=null){
+      if(isOuterScrollAnimated!){
+        extendedNestedScrollViewKey.currentState?.outerController.animateTo(
+          outerOffset,
+          duration: const Duration(seconds: 1),
+          curve: Curves.easeIn,
+        );
+      }else {
+        extendedNestedScrollViewKey.currentState?.outerController.jumpTo(
+          outerOffset,
+        );
+      }
+    }
+
+    if(innerOffset !=null){
+      extendedNestedScrollViewKey.currentState?.innerPositions.forEach((position) {
+        if(isInnerScrollAnimated!){
+          position.animateTo(innerOffset,
+              duration: Duration(seconds: 1), curve: Curves.easeIn);
+        }else {
+          position.jumpTo(innerOffset);
+        }
+      });
+    }
   }
 
   // 点击了导航栏的 filter btn

+ 5 - 3
packages/cpt_community/lib/modules/community/customSilverHeaderTabs.dart

@@ -2,14 +2,16 @@ import 'package:flutter/cupertino.dart';
 
 class CustomSliverPersistentHeaderDelegate extends SliverPersistentHeaderDelegate {
    final Widget child;
+   double maxHeight = 100.0;
+   double minHeight = 100.0;
 
-   CustomSliverPersistentHeaderDelegate({required this.child});
+   CustomSliverPersistentHeaderDelegate({required this.child, required this.maxHeight, required this.minHeight});
 
    @override
-   double get minExtent => 100.0; // 最小高度
+   double get maxExtent => maxHeight; // 最大高度
 
    @override
-   double get maxExtent => 100.0; // 最大高度
+   double get minExtent => minHeight; // 最小高度
 
    @override
    Widget build(BuildContext context, double shrinkOffset, bool overlapsContent) {

+ 4 - 10
packages/cpt_community/lib/modules/community/following/following_page.dart

@@ -40,7 +40,7 @@ class FollowingPage extends HookConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    final vm = ref.read(followingVmProvider.notifier);
+    final vm = ref.watch(followingVmProvider.notifier);
     final state = ref.watch(followingVmProvider);
     bool isVisible = false;
     useEffect((){
@@ -63,15 +63,9 @@ class FollowingPage extends HookConsumerWidget {
             Expanded(
               child:  EasyRefresh(
                 controller: vm.refreshController,
-                key: UniqueKey(),
-                onLoad: () async{
-                  Log.d("--following--onLoad");
-                  vm.loadMore();
-                },
-                onRefresh: () async{
-                  Log.d("--following--onRefresh");
-                  vm.onRefresh();
-                },
+                key: const PageStorageKey<String>('news'),
+                onLoad: vm.loadMore,
+                onRefresh: vm.onRefresh,
                 child: LoadStateLayout(
                   state: state.loadingState,
                   errorMessage: state.errorMessage,

+ 25 - 13
packages/cpt_community/lib/modules/community/following/following_vm.dart

@@ -71,14 +71,6 @@ class FollowingVm extends _$FollowingVm {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.following);
     if(isShowing){
       Log.d("----following_vm-----loadMore");
-      // await Future.delayed(const Duration(seconds: 2));
-      // if(state.list.length >= _count){
-      //   return;
-      // }else {
-      //   int page = _page + 1;
-      //   state = state.copyWith(page: page,);
-      //   getListData();
-      // }
       _page++;
       getListData();
     }else {
@@ -102,12 +94,32 @@ class FollowingVm extends _$FollowingVm {
     }
   }
 
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(list:[]);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getListData();
+  }
+
   // 重试请求
   Future retryRequest() async {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.following);
     if(isShowing){
+      Log.d("重新加载数据---9999-----");
       _page = 1;
-      _needShowPlaceholder = true;
+      refreshController.resetFooter();
+      _needShowPlaceholder = false;
       getListData();
     }else {
       refreshController.finishRefresh();
@@ -118,9 +130,9 @@ class FollowingVm extends _$FollowingVm {
   // 获取list 列表数据
   Future getListData<T>() async {
     if (_needShowPlaceholder) {
+      Log.d("修改加载状态---LoadState.State_Loading-----");
       changeLoadingState(LoadState.State_Loading, null);
     }
-    Log.d("加载listData数据---------------start--${_page}---");
 
     try {
       //请求网络
@@ -141,8 +153,8 @@ class FollowingVm extends _$FollowingVm {
     } catch (e) {
       ToastEngine.show("Error: $e");
     }
-    // // 最后赋值
-    // _needShowPlaceholder = false;
+    // 最后赋值
+    _needShowPlaceholder = false;
   }
 
 
@@ -154,12 +166,12 @@ class FollowingVm extends _$FollowingVm {
         state.list!.clear();
         state.list!.addAll(list.map((item) => item.toJson()).toList());
         refreshController.finishRefresh();
-
         //更新展示的状态
         changeLoadingState(LoadState.State_Success, null);
       } else {
         //加载更多
         final allList = state.list;
+        allList!.addAll(list.map((item) => item.toJson()).toList());
         state = state.copyWith(list: allList);
         refreshController.finishLoad();
       }

+ 1 - 1
packages/cpt_community/lib/modules/community/foryou/foryou_page.dart

@@ -63,7 +63,7 @@ class ForyouPage extends HookConsumerWidget {
             Expanded(
               child: EasyRefresh(
                 controller: vm.refreshController,
-                key: UniqueKey(),
+                key: const PageStorageKey<String>('news'),
                 onLoad: () async{
                   Log.d("--foryou--onLoad");
                   vm.loadMore();

+ 20 - 133
packages/cpt_community/lib/modules/community/foryou/foryou_vm.dart

@@ -73,15 +73,6 @@ class ForyouVm extends _$ForyouVm {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.forYou);
     if(isShowing){
       Log.d("----foryou_vm-----loadMore");
-      // await Future.delayed(const Duration(seconds: 2));
-      // if(state.list.length >= _count){
-      //   return;
-      // }else {
-      //   int page = _page + 1;
-      //   state = state.copyWith(page: page,);
-      //   getListData();
-      // }
-      // 检查 page 是否为 null,并初始化为 1
       _page++;
       getListData();
     }else {
@@ -89,6 +80,12 @@ class ForyouVm extends _$ForyouVm {
     }
   }
 
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
 
   // 下拉刷新
   Future onRefresh() async {
@@ -104,6 +101,18 @@ class ForyouVm extends _$ForyouVm {
     }
   }
 
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(list:[]);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getListData();
+  }
+
   // 重试请求
   Future retryRequest() async {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.forYou);
@@ -121,130 +130,6 @@ class ForyouVm extends _$ForyouVm {
       changeLoadingState(LoadState.State_Loading, null);
     }
 
-    Log.d("加载listData数据---------------start--${_page}---");
-    //   try {
-    //     //请求网络
-    //     Map<String, dynamic>  params = {
-    //       "page": _page,
-    //       "limit": _limit,
-    //     };
-    //     Log.d("请求参数------$params");
-    //     final result = await propertyNewsRepository.fetchPropertyNewsList(params);
-    //     Log.d("请求完成结果------${result.data}");
-    //     //校验成功失败
-    //     if (result.isSuccess) {
-    //       // state = state.copyWith(serverTime: result.data);
-    //       state = state;
-    //   handleList(listResult.data?.rows);
-    //       ToastEngine.show("获取数据成功");
-    //     } else {
-    //   errorMessage = listResult.errorMsg;
-    //   changeLoadingState(LoadState.State_Error);
-    //       ToastEngine.show(result.errorMsg ?? "Network Load Error");
-    //     }
-    //   } catch (e) {
-    //     ToastEngine.show("Error: $e");
-    //   }
-
-    // await Future.delayed(const Duration(milliseconds: 1500));
-    // final List<Map<String, dynamic>> listData = [
-    //   {
-    //     'id':1,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'William Jefferson',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': ['https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500','https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500','https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500'],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': true,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':2,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'William fdsaf的飞洒发生的',
-    //     'isFollow': true,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': true,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':3,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'Fsjfkds  dfsk',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': false,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':4,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'Fsjfkds  dfsk',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': false,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':5,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'Fsjfkds  dfsk',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': false,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':6,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': 'Fsjfkds  dfsk',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': false,
-    //     'likeno': 12
-    //   },
-    //   {
-    //     'id':7,
-    //     'avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-    //     'title': '放大发大水',
-    //     'isFollow': false,
-    //     'content': 'She said YES and our lives changed.Thank you all for coming to my propose today.We hope everyone can ……[More]',
-    //     'imageUrls': [],
-    //     'time': 'June 17,2016 at 7:23 p.m.',
-    //     'isLike': false,
-    //     'likeno': 12
-    //   },
-    // ];
-    //
-    // if (_page == 1) {
-    //   //刷新的方式
-    //   state = state.copyWith(list: listData);
-    //   refreshController.finishRefresh();
-    //   // //更新展示的状态
-    //   changeLoadingState(LoadState.State_Success, null);
-    // } else {
-    //   //加载更多
-    //   final allList = state.list;
-    //   allList?.addAll(listData);
-    //   state = state.copyWith(list: allList);
-    //   refreshController.finishLoad();
-    //
-    // }
-    //
-    // // 最后赋值
-    // _needShowPlaceholder = false;
-
     try {
       //请求网络
       Map<String, dynamic>  params = {
@@ -264,6 +149,8 @@ class ForyouVm extends _$ForyouVm {
     } catch (e) {
       ToastEngine.show("Error: $e");
     }
+    // 最后赋值
+    _needShowPlaceholder = false;
   }
 
 

+ 5 - 1
packages/cpt_community/lib/modules/community/news/news_page.dart

@@ -1,4 +1,5 @@
 import 'package:cs_resources/generated/assets.dart';
+import 'package:extended_nested_scroll_view/extended_nested_scroll_view.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -16,6 +17,7 @@ import 'package:widgets/my_text_view.dart';
 import 'package:widgets/my_appbar.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
 import 'package:widgets/widget_export.dart';
+import 'package:easy_refresh/easy_refresh.dart';
 
 import '../../../components/newfeed_card_header.dart';
 import '../../../components/newsfeed_card_content.dart';
@@ -63,12 +65,13 @@ class NewsPage extends HookConsumerWidget {
         children: [
           Expanded(
             child: EasyRefresh(
+              key: const PageStorageKey<String>('news'),
               controller: vm.refreshController,
-              key: UniqueKey(),
               onLoad: () async{
                 Log.d("--news--onLoad");
                 vm.loadMore();
               },
+
               onRefresh: () async{
                 Log.d("--news--onRefresh");
                 vm.onRefresh();
@@ -79,6 +82,7 @@ class NewsPage extends HookConsumerWidget {
                 errorRetry: () {
                   vm.retryRequest();
                 },
+                  // sliverScrollController: vm.scrollController,
                 successSliverWidget: [
                   SliverList(
                     delegate: SliverChildBuilderDelegate(

+ 29 - 11
packages/cpt_community/lib/modules/community/news/news_vm.dart

@@ -9,6 +9,7 @@ import 'package:shared/utils/ext_dart.dart';
 import 'package:shared/utils/log_utils.dart';
 import 'package:widgets/load_state_layout.dart';
 import 'package:widgets/widget_export.dart';
+import 'package:easy_refresh/easy_paging.dart';
 
 import '../../../router/page/community_page_router.dart';
 import '../community_pageview_idx_data.dart';
@@ -34,6 +35,10 @@ class NewsVm extends _$NewsVm {
   
   bool _needShowPlaceholder = false; //是否展示LoadingView
 
+  // Scroll 控制器
+  final ScrollController scrollController = ScrollController();
+
+
   // Refresh 控制器
   final EasyRefreshController refreshController = EasyRefreshController(
     controlFinishRefresh: true,  //允许刷新
@@ -75,14 +80,6 @@ class NewsVm extends _$NewsVm {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.news);
     if(isShowing){
       Log.d("----news_vm-----loadMore");
-      // await Future.delayed(const Duration(seconds: 2));
-      // if(state.list.length >= _count){
-      //   return;
-      // }else {
-      //   int page = _page + 1;
-      //   state = state.copyWith(page: page,);
-      //   getListData();
-      // }
       _page++;
       getListData(isLoadMore: true);
     }else {
@@ -96,7 +93,7 @@ class NewsVm extends _$NewsVm {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.news);
     if(isShowing){
       // 当前pageView 页面正处于显示状态
-      Log.d("----forsale_vm-----onRefresh ");
+      Log.d("----news_vm-----onRefresh ");
       // await Future.delayed(const Duration(seconds: 2));
       _page = 1;
       getListData();
@@ -105,6 +102,12 @@ class NewsVm extends _$NewsVm {
     }
   }
 
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
   // 重试请求
   Future retryRequest() async {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.news);
@@ -112,20 +115,32 @@ class NewsVm extends _$NewsVm {
       _page = 1;
       _needShowPlaceholder = true;
       getListData();
+      Log.d("99999999");
+      // refreshController.callRefresh();
     }else {
       refreshController.finishRefresh();
     }
   }
 
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(list:[]);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    // refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getListData();
+  }
 
   // 获取list 列表数据
   Future getListData<T>({bool? isLoadMore}) async {
+    Log.d("getListData   _needShowPlaceholder: $_needShowPlaceholder");
     if (_needShowPlaceholder) {
       changeLoadingState(LoadState.State_Loading, null);
     }
 
-    Log.d("加载listData数据---------------start--${_page}---");
-
     try {
       //请求网络
       Map<String, dynamic>  params = {
@@ -145,6 +160,8 @@ class NewsVm extends _$NewsVm {
     } catch (e) {
       ToastEngine.show("Error: $e");
     }
+
+    _needShowPlaceholder = false;
   }
 
 
@@ -152,6 +169,7 @@ class NewsVm extends _$NewsVm {
     if (list != null && list.isNotEmpty) {
       //有数据,判断是刷新还是加载更多的数据
       if (_page == 1) {
+        refreshController.resetFooter();
         //刷新的方式
         state.list!.clear();
         state.list!.addAll(list.map((item) => item.toJson()).toList());

+ 1 - 0
packages/cpt_community/lib/modules/garage/for_rent/for_rent_page.dart

@@ -63,6 +63,7 @@ class ForrentPage extends HookConsumerWidget {
           width: double.infinity,
           height: double.infinity,
           child: EasyRefresh(
+            key: ValueKey('forrent'),
             controller: vm.refreshController,
             // 上拉加载
             onLoad: () async{

+ 18 - 39
packages/cpt_community/lib/modules/garage/for_rent/for_rent_vm.dart

@@ -137,6 +137,24 @@ class ForrentVm extends _$ForrentVm {
     }
   }
 
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(list:[]);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getListData();
+  }
+
   // 重试请求
   Future retryRequest() async {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.forRent);
@@ -156,45 +174,6 @@ class ForrentVm extends _$ForrentVm {
       changeLoadingState(LoadState.State_Loading, null);
     }
 
-    Log.d("for_rent加载listData数据---------------start--${_page}---");
-    // await Future.delayed(const Duration(milliseconds: 1500));
-    // final List<Map<String, dynamic>> listData = [
-    //   {
-    //     'id':1,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$66',
-    //     'isCollection': true,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':2,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$88',
-    //     'isCollection': false,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':3,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$66',
-    //     'isCollection': true,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    // ];
-
-
     try {
       //请求网络
       Map<String, dynamic>  params = {

+ 2 - 0
packages/cpt_community/lib/modules/garage/for_sale/for_sale_page.dart

@@ -1,5 +1,6 @@
 import 'package:cpt_community/modules/garage/for_rent/for_rent_page.dart';
 import 'package:cs_resources/generated/assets.dart';
+import 'package:domain/entity/garage_sale_rent_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter/rendering.dart';
@@ -66,6 +67,7 @@ class ForsalePage extends HookConsumerWidget {
         width: double.infinity,
         height: double.infinity,
         child: EasyRefresh(
+          key: ValueKey('forsale'),
           controller: vm.refreshController,
           // 上拉加载
           onLoad: () async{

+ 26 - 92
packages/cpt_community/lib/modules/garage/for_sale/for_sale_vm.dart

@@ -2,6 +2,7 @@ import 'package:cpt_community/modules/community/community_vm.dart';
 import 'package:cpt_community/respository/common_garage.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:domain/entity/garage_sale_rent_entity.dart';
+import 'package:domain/entity/newsfeed_detail_entity.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:plugin_platform/engine/toast/toast_engine.dart';
 import 'package:riverpod_annotation/riverpod_annotation.dart';
@@ -105,6 +106,26 @@ class ForsaleVm extends _$ForsaleVm {
     }
   }
 
+
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(list:[]);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getListData();
+  }
+
+
   // 重试请求
   Future retryRequest() async {
     bool isShowing = await ref.read(communityVmProvider.notifier).isCurrentPageViewShowing(CommunityPageViewIdxData.forSale);
@@ -124,96 +145,6 @@ class ForsaleVm extends _$ForsaleVm {
       changeLoadingState(LoadState.State_Loading, null);
     }
 
-    Log.d("for_sale_vm加载listData数据---------------start--${_page}---");
-
-    // await Future.delayed(const Duration(milliseconds: 1500));
-    // final List<Map<String, dynamic>> listData = [
-    //   {
-    //     'id':1,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$66',
-    //     'isCollection': true,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':2,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$88',
-    //     'isCollection': false,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':3,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$66',
-    //     'isCollection': true,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':4,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$88',
-    //     'isCollection': false,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':5,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$66',
-    //     'isCollection': true,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    //   {
-    //     'id':6,
-    //     'goods_img':  'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-    //     'title': 'Electronic keyboard',
-    //     'price': '\$88',
-    //     'isCollection': false,
-    //     'collection_num': 12,
-    //     'publisher': 'William Jefferson',
-    //     'publish_time': 'June 17,2016 at 7:23 p.m.',
-    //     'publisher_avator': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500'
-    //   },
-    // ];
-    //
-    // if (_page == 1) {
-    //   //刷新的方式
-    //   state = state.copyWith(list: listData);
-    //   refreshController.finishRefresh();
-    //   // //更新展示的状态
-    //   changeLoadingState(LoadState.State_Success, null);
-    // } else {
-    //   //加载更多
-    //   final allList = state.list;
-    //   allList.addAll(listData);
-    //   state = state.copyWith(list: allList);
-    //   refreshController.finishLoad();
-    //
-    // }
-    //
-    // // 最后赋值
-    // _needShowPlaceholder = false;
-
     try {
       //请求网络
       Map<String, dynamic>  params = {
@@ -227,7 +158,7 @@ class ForsaleVm extends _$ForsaleVm {
       final result = await commonGarageRespositoryInstance.fetchGarageDataList(params);
       //校验成功失败
       if (result.isSuccess) {
-        handlerResultList(result.list?.cast<GarageSaleRentEntity>(), isLoadMore ?? false);
+        handlerResultList((result.data as GarageSaleRentEntity).list as List<GarageSaleRentList>, isLoadMore ?? false);
       } else {
         String errorMessage = result.errorMsg!;
         changeLoadingState(LoadState.State_Error, errorMessage);
@@ -237,10 +168,13 @@ class ForsaleVm extends _$ForsaleVm {
       ToastEngine.show("Error: $e");
     }
 
+    // 最后赋值
+    _needShowPlaceholder = false;
+
   }
 
 
-  void handlerResultList(List<GarageSaleRentEntity>? list, bool isLoadMore) {
+  void handlerResultList(List<GarageSaleRentList>? list, bool isLoadMore) {
     if (list != null && list.isNotEmpty) {
       //有数据,判断是刷新还是加载更多的数据
       if (_page == 1) {

+ 77 - 42
packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_page.dart

@@ -2,6 +2,8 @@ import 'package:cpt_community/modules/garage/garagesale_detail/garagesale_detail
 import 'package:cpt_community/router/page/community_page_router.dart';
 import 'package:cs_resources/generated/assets.dart';
 import 'package:cs_resources/theme/app_colors_theme.dart';
+import 'package:domain/entity/garage_sale_rent_detail_entity.dart';
+import 'package:domain/entity/garage_sale_rent_entity.dart';
 import 'package:flutter/material.dart';
 import 'package:auto_route/auto_route.dart';
 import 'package:flutter_hooks/flutter_hooks.dart';
@@ -14,6 +16,7 @@ import 'package:widgets/my_appbar.dart';
 import 'package:widgets/my_like_button.dart';
 import 'package:widgets/my_load_image.dart';
 import 'package:widgets/my_text_view.dart';
+import 'package:widgets/widget_export.dart';
 
 @RoutePage()
 class GaragesaleDetailPage extends HookConsumerWidget {
@@ -38,11 +41,13 @@ class GaragesaleDetailPage extends HookConsumerWidget {
     final String pageTitle = (type == 'forSale') ? 'For Sale' :'For Rent';
     GlobalKey _likeButtonKey = GlobalKey<MyLikeButtonState>();
 
-    String title =  '';
-    String price =  '';
+    GarageSaleRentDetailEntity detailInfo = state.datas?? GarageSaleRentDetailEntity();
+    String title =  detailInfo.title?? '';
+    int price =  detailInfo.price?? 0;
     String contactType = '';
     String description = '';
 
+
     useEffect((){
       vm.setInitPageData(id: id!, type: type);
       // 组件挂载时执行 - 执行接口请求
@@ -62,36 +67,54 @@ class GaragesaleDetailPage extends HookConsumerWidget {
       body: Column(
         children: [
           Expanded(
-            child: Stack(
-              children:[
-                LoadStateLayout(
-                  state: state.loadingState,
-                  errorMessage: state.errorMessage,
-                  errorRetry: () {
-                    vm.retryRequest();
-                  },
-                  successWidget: SingleChildScrollView(
-                    scrollDirection: Axis.vertical,
-                    physics: const BouncingScrollPhysics(),
-                    clipBehavior: Clip.none,
-                    child: _buildContentBox(context, ref,
+            child: EasyRefresh(
+              controller: vm.refreshController,
+              // 上拉加载
+              onLoad: () async{
+                Log.d("----onLoad");
+                // vm.loadMore();
+              },
+              // 下拉刷新
+              onRefresh: () async{
+                Log.d("----onRefresh");
+                vm.onRefresh();
+              },
+              child: Stack(
+                children:[
+                  LoadStateLayout(
+                    state: state.loadingState,
+                    errorMessage: state.errorMessage,
+                    errorRetry: () {
+                      vm.retryRequest();
+                    },
+                    // successWidget: SingleChildScrollView(
+                    //   scrollDirection: Axis.vertical,
+                    //   physics: const BouncingScrollPhysics(),
+                    //   clipBehavior: Clip.none,
+                    //   child: _buildContentBox(context, ref, detailInfo,),
+                    // ),
+                    successSliverWidget: [
+                      SliverList(
+                        delegate: SliverChildBuilderDelegate(
+                                (context, index){
+                              return _buildContentBox(context, ref, detailInfo);
+                            },
+                            childCount: 1
+                        ),
+                      )
+                    ],
+                  ),
+                  Visibility(
+                    visible: state.loadingState == LoadState.State_Success,
+                    child: _buildWhatsApp(context, ref,
                       title:title,
                       price:price,
                       contactType:contactType,
                       description:description,
                     ),
                   ),
-                ),
-                Visibility(
-                  visible: state.loadingState == LoadState.State_Success,
-                  child: _buildWhatsApp(context, ref,
-                    title:title,
-                    price:price,
-                    contactType:contactType,
-                    description:description,
-                  ),
-                ),
-              ]
+                ]
+              ),
             ),
           ),
           // 底部联系信息
@@ -102,6 +125,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
               price:price,
               contactType:contactType,
               description:description,
+              detailInfo:detailInfo,
             ),
           )
         ],
@@ -109,7 +133,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
     );
   }
 
-  Widget _buildWhatsApp(BuildContext context, WidgetRef ref, {required String title, required String price, required String contactType, required String description}) {
+  Widget _buildWhatsApp(BuildContext context, WidgetRef ref, {required String title, required int price, required String contactType, required String description}) {
     final vm = ref.read(garagesaleDetailVmProvider.notifier);
     return Positioned(
       right: 15.5,
@@ -124,14 +148,12 @@ class GaragesaleDetailPage extends HookConsumerWidget {
     );
   }
 
-  Widget _buildContentBox(BuildContext context, WidgetRef ref, {required String title, required String price, required String contactType, required String description}) {
-    final vm = ref.read(garagesaleDetailVmProvider.notifier);
-    final state = ref.watch(garagesaleDetailVmProvider);
-    String goods_img = '';
-    String title =  '';
-    String price = '';
+  Widget _buildContentBox(BuildContext context, WidgetRef ref, GarageSaleRentDetailEntity detailInfo) {
+    String goods_img = detailInfo.resources?[0]??'';
+    String title =  detailInfo.title??'';
+    int price = detailInfo.price??0;
     String contactType =  '';
-    String description = '';
+    String description = detailInfo.description??'';
     return Column(
       crossAxisAlignment: CrossAxisAlignment.start,
       children: [
@@ -154,7 +176,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
             // 价格
             Padding(
               padding: const EdgeInsets.only(left: 16, right: 16, top: 10),
-              child: price.isNotEmpty? MyTextView( price, fontSize: 24, isFontMedium: true, textColor: context.appColors.textBlack,):const SizedBox.shrink(),
+              child: price!=null? MyTextView( '$price', fontSize: 24, isFontMedium: true, textColor: context.appColors.textBlack,):const SizedBox.shrink(),
             ),
            //  内容
             Padding(
@@ -168,15 +190,28 @@ class GaragesaleDetailPage extends HookConsumerWidget {
     );
   }
 
-  Widget _buildBottomConcatInfo(BuildContext context, WidgetRef ref, likeButtonKey, {required String title, required String price, required String contactType, required String description}) {
+  Widget _buildBottomConcatInfo(
+      BuildContext context,
+      WidgetRef ref,
+      likeButtonKey,
+      {
+        required String title,
+        required int price,
+        required String contactType,
+        required String description,
+        required GarageSaleRentDetailEntity detailInfo,
+      }
+      ) {
     final state = ref.watch(garagesaleDetailVmProvider);
 
-    String publisher =  '';
+
+    GarageSaleRentDetailAccount  account = detailInfo.account?? GarageSaleRentDetailAccount();
+
+    String publisher =  account.name??'-';
     String contactType =  '';
-    String contactInfo =  '';
-    String publisherAvatar = '';
-    String publisherTime =  '';
-    int collectionNum =  0;
+    String publisherAvatar = account.avatar??'-';
+    String publisherTime =  detailInfo.createdAt??'-';
+    int likes_count =  detailInfo!.likesCount??0;
 
     return Container(
       height: 50,
@@ -231,7 +266,7 @@ class GaragesaleDetailPage extends HookConsumerWidget {
                         },
                       ),
                       MyTextView(
-                        "$collectionNum",
+                        "$likes_count",
                         fontSize: 18,
                         textColor: Colors.white,
                         isFontRegular: true,

+ 92 - 59
packages/cpt_community/lib/modules/garage/garagesale_detail/garagesale_detail_vm.dart

@@ -18,15 +18,19 @@ part 'garagesale_detail_vm.g.dart';
 @riverpod
 class GaragesaleDetailVm extends _$GaragesaleDetailVm {
   late CommonGarageRespository commonGarageRespositoryInstance;
-  bool _needShowPlaceholder = false; //是否展示LoadingView
 
   int _detailId = 0;
   String _detailType = "";
 
+  bool _needShowPlaceholder = false; //是否展示LoadingView
+  int _page = 1;  // 当前页
+  int _limit = 10; // 每页数量
+  int _count = 0; // 总条数
+
   // Refresh 控制器
   final EasyRefreshController refreshController = EasyRefreshController(
     controlFinishRefresh: true,  //允许刷新
-    controlFinishLoad: true,   //允许加载
+    controlFinishLoad: false,   //允许加载
   );
 
   GarageDetailState initState() {
@@ -54,80 +58,109 @@ class GaragesaleDetailVm extends _$GaragesaleDetailVm {
     );
   }
 
+  // 初始化页面数据
+  initPageData() {
+    Log.d("----for_sale_vm-----initPageData   ${state.loadingState}");
+    onRefresh();
+  }
+
+  // 上拉加载 更多
+  Future loadMore() async {
+    _page++;
+    getDetailData();
+  }
+
+
+  // 下拉刷新
+  Future onRefresh() async {
+    _page = 1;
+    getDetailData();
+  }
+
+
+  // 手动进行刷新
+  Future triggerRefresh() async {
+    Log.d("trggerRefresh");
+    refreshController.callRefresh();
+  }
+
+  // 手动进行刷新
+  Future directRefresh() async {
+    state = state.copyWith(datas:null);
+    // 注意:由于 nestedscrollview 嵌套easyfresh 组件  refreshController.callRefresh() 自动刷新只能滚动顶部但是不会触发下拉刷新,这里调用是 用到了将其滚动到顶部的作用,进而刷新操作主动掉接口
+    // https://github.com/xuelongqy/flutter_easy_refresh/issues/692
+    refreshController.callRefresh();
+    refreshController.resetFooter();
+    _page = 1;
+    _needShowPlaceholder = true;
+    getDetailData();
+  }
+
+
   // 重试请求
   Future retryRequest() async {
+    _page = 1;
     _needShowPlaceholder = true;
     getDetailData();
   }
 
+
   setInitPageData({required int id, required String type}){
     _detailId = id;
     _detailType = type;
   }
-  // 初始化页面数据
-  initPageData() {
-    Log.d("----property_news_vm-----initPageData   ${state.loadingState}");
-    getDetailData();
-  }
 
   Future getDetailData<T>() async {
     if (_needShowPlaceholder) {
       changeLoadingState(LoadState.State_Loading, null);
     }
 
-    //   try {
-    //     //请求网络
-    //     Map<String, dynamic>  params = {
-    //       "page": state.page,
-    //       "limit": state.limit,
-    //     };
-    //     Log.d("请求参数------$params");
-
-    await Future.delayed(const Duration(milliseconds: 1500));
-
-    final Map<String, dynamic> detailData = {
-      'id':1,
-      'goods_img': 'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
-      'title': 'Electronic keyboard',
-      'price': '\$66',
-      'description':'Electronic keyboards for sale. I will attend together with the booth.\$10 per day usage Negotiable usage',
-      'isCollection': true,
-      'contactType': 'WhatsApp',
-      'contactInfo': '+1 123456789',
-      'collection_num': 12,
-      'publisher': 'William Jefferson',
-      'publisher_avatar': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
-      'publisher_time': 'June 17,2024 at 7:23 PM'
-    };
-
-    state = state.copyWith(datas: GarageSaleRentDetailEntity(
-    ));
-
-    changeLoadingState(LoadState.State_Success, null);
-
-    refreshController.finishRefresh();
-
-    // 最后赋值
-    _needShowPlaceholder = false;
 
-
-    // try {
-    //   Map<String, dynamic> params = {
-    //     "id": _detailId,
-    //   };
-    //   final result = await commonGarageRespositoryInstance.fetchGarageDetailInfo(params);
-    //   if(result.isSuccess){
-    //     state = state.copyWith(datas: result.data as GarageSaleRentDetailEntity);
-    //     changeLoadingState(LoadState.State_Success, null);
-    //     refreshController.finishRefresh();
-    //   } else {
-    //     String errorMessage = result.errorMsg!;
-    //     changeLoadingState(LoadState.State_Error, errorMessage);
-    //     ToastEngine.show(result.errorMsg ?? "Network Load Error");
-    //   }
-    // } catch (e) {
-    //   ToastEngine.show("Error: $e");
-    // }
+    // await Future.delayed(const Duration(milliseconds: 1500));
+    //
+    // final Map<String, dynamic> detailData = {
+    //   'id':1,
+    //   'goods_img': 'https://img2.baidu.com/it/u=3489233687,2364672159&fm=253&fmt=auto&app=120&f=JPEG?w=507&h=500',
+    //   'title': 'Electronic keyboard',
+    //   'price': '\$66',
+    //   'description':'Electronic keyboards for sale. I will attend together with the booth.\$10 per day usage Negotiable usage',
+    //   'isCollection': true,
+    //   'contactType': 'WhatsApp',
+    //   'contactInfo': '+1 123456789',
+    //   'collection_num': 12,
+    //   'publisher': 'William Jefferson',
+    //   'publisher_avatar': 'https://img1.baidu.com/it/u=3890726495,1572750319&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500',
+    //   'publisher_time': 'June 17,2024 at 7:23 PM'
+    // };
+
+    // state = state.copyWith(datas: GarageSaleRentDetailEntity(
+    // ));
+    //
+    // changeLoadingState(LoadState.State_Success, null);
+    //
+    // refreshController.finishRefresh();
+    //
+    // // 最后赋值
+    // _needShowPlaceholder = false;
+
+
+    try {
+      Map<String, dynamic> params = {
+        "id": _detailId,
+      };
+      final result = await commonGarageRespositoryInstance.fetchGarageDetailInfo(params);
+      if(result.isSuccess){
+        state = state.copyWith(datas: result.data as GarageSaleRentDetailEntity);
+        changeLoadingState(LoadState.State_Success, null);
+        refreshController.finishRefresh();
+      } else {
+        String errorMessage = result.errorMsg!;
+        changeLoadingState(LoadState.State_Error, errorMessage);
+        ToastEngine.show(result.errorMsg ?? "Network Load Error");
+      }
+    } catch (e) {
+      ToastEngine.show("Error: $e");
+    }
 
     // 最后赋值
     _needShowPlaceholder = false;

+ 3 - 3
packages/cpt_community/lib/respository/common_garage.dart

@@ -95,10 +95,10 @@ class CommonGarageRespository {
     //根据返回的结果,封装原始数据为Bean/Entity对象
     if (result.isSuccess) {
       //重新赋值data或list
-      final json = result.getListJson();
-      List<GarageSaleRentEntity> data = json?.map((item) => GarageSaleRentEntity.fromJson(item)).toList() ?? [];
+      final json = result.getDataJson();
+      var data = GarageSaleRentEntity.fromJson(json!);
       //重新赋值data或list
-      return result.convert(list: data);
+      return result.convert(data: data);
     }else {
       if(result.errorMsg != null && result.errorMsg!.isNotEmpty){
         ToastEngine.show("${result.errorMsg}");

+ 1 - 1
packages/cpt_community/lib/router/page/community_page_router.gr.dart

@@ -18,7 +18,7 @@ abstract class _$CommunityPageRouter extends RootStackRouter {
     CommunityPageRoute.name: (routeData) {
       return AutoRoutePage<dynamic>(
         routeData: routeData,
-        child: const CommunityPage(),
+        child:  CommunityPage(),
       );
     },
     FollowingPageRoute.name: (routeData) {

+ 3 - 0
packages/cpt_community/pubspec.yaml

@@ -48,6 +48,9 @@ dependencies:
   # Hooks 简化 Riverpod 获取
   hooks_riverpod: ^2.5.1
 
+  # extended_nested_scroll_view
+  extended_nested_scroll_view: ^6.2.1
+
 dev_dependencies:
   flutter_test:
     sdk: flutter

+ 1 - 1
packages/cpt_property/lib/modules/property/page/property_page.dart

@@ -50,7 +50,7 @@ class PropertyPage extends HookConsumerWidget {
                     width: MediaQuery.of(context).size.width / topSectionsData.length - 36,
                     height: 70,
                     decoration: BoxDecoration(
-                      // color: currentTabIdx == index ? ColorUtils.string2Color('#E6F2FF') : Colors.white,
+                      color: ColorUtils.string2Color("#F0F8FF"),
                       shape: BoxShape.circle, // 设置为圆形
                       boxShadow: tabsRouter.activeIndex == index ? [
                         BoxShadow(

+ 3 - 0
packages/cs_domain/lib/entity/garage_sale_rent_detail_entity.dart

@@ -12,6 +12,9 @@ class GarageSaleRentDetailEntity {
 	List<String>? resources;
 	@JSONField(name: "created_at")
 	String? createdAt;
+	@JSONField(name: "likes_count")
+	int? likesCount;
+	String? contact;
 	GarageSaleRentDetailAccount? account;
 
 	GarageSaleRentDetailEntity();

+ 33 - 12
packages/cs_domain/lib/entity/garage_sale_rent_entity.dart

@@ -5,22 +5,43 @@ export 'package:domain/generated/json/garage_sale_rent_entity.g.dart';
 
 @JsonSerializable()
 class GarageSaleRentEntity {
-	double? id;
+	int? count;
+	int? page;
+	int? limit;
+	@JSONField(name: "count_page")
+	int? countPage;
+	List<GarageSaleRentList>? list;
+
+	GarageSaleRentEntity();
+
+	factory GarageSaleRentEntity.fromJson(Map<String, dynamic> json) => $GarageSaleRentEntityFromJson(json);
+
+	Map<String, dynamic> toJson() => $GarageSaleRentEntityToJson(this);
+
+	@override
+	String toString() {
+		return jsonEncode(this);
+	}
+}
+
+@JsonSerializable()
+class GarageSaleRentList {
+	int? id;
 	String? title;
-	double? price;
+	int? price;
 	List<String>? resources;
 	@JSONField(name: "created_at")
 	String? createdAt;
 	bool? liked;
 	@JSONField(name: "likes_count")
-	double? likesCount;
-	GarageSaleRentAccount? account;
+	int? likesCount;
+	GarageSaleRentListAccount? account;
 
-	GarageSaleRentEntity();
+	GarageSaleRentList();
 
-	factory GarageSaleRentEntity.fromJson(Map<String, dynamic> json) => $GarageSaleRentEntityFromJson(json);
+	factory GarageSaleRentList.fromJson(Map<String, dynamic> json) => $GarageSaleRentListFromJson(json);
 
-	Map<String, dynamic> toJson() => $GarageSaleRentEntityToJson(this);
+	Map<String, dynamic> toJson() => $GarageSaleRentListToJson(this);
 
 	@override
 	String toString() {
@@ -29,16 +50,16 @@ class GarageSaleRentEntity {
 }
 
 @JsonSerializable()
-class GarageSaleRentAccount {
-	double? id;
+class GarageSaleRentListAccount {
+	int? id;
 	String? name;
 	String? avatar;
 
-	GarageSaleRentAccount();
+	GarageSaleRentListAccount();
 
-	factory GarageSaleRentAccount.fromJson(Map<String, dynamic> json) => $GarageSaleRentAccountFromJson(json);
+	factory GarageSaleRentListAccount.fromJson(Map<String, dynamic> json) => $GarageSaleRentListAccountFromJson(json);
 
-	Map<String, dynamic> toJson() => $GarageSaleRentAccountToJson(this);
+	Map<String, dynamic> toJson() => $GarageSaleRentListAccountToJson(this);
 
 	@override
 	String toString() {

+ 178 - 87
packages/cs_domain/lib/generated/json/base/json_convert_content.dart

@@ -93,12 +93,14 @@ class JsonConvert {
     }
   }
 
-  List<T?>? convertList<T>(List<dynamic>? value, {EnumConvertFunction? enumConvert}) {
+  List<T?>? convertList<T>(List<dynamic>? value,
+      {EnumConvertFunction? enumConvert}) {
     if (value == null) {
       return null;
     }
     try {
-      return value.map((dynamic e) => _asT<T>(e, enumConvert: enumConvert)).toList();
+      return value.map((dynamic e) => _asT<T>(e, enumConvert: enumConvert))
+          .toList();
     } catch (e, stackTrace) {
       debugPrint('asT<$T> $e $stackTrace');
       if (onError != null) {
@@ -108,12 +110,14 @@ class JsonConvert {
     }
   }
 
-  List<T>? convertListNotNull<T>(dynamic value, {EnumConvertFunction? enumConvert}) {
+  List<T>? convertListNotNull<T>(dynamic value,
+      {EnumConvertFunction? enumConvert}) {
     if (value == null) {
       return null;
     }
     try {
-      return (value as List<dynamic>).map((dynamic e) => _asT<T>(e, enumConvert: enumConvert)!).toList();
+      return (value as List<dynamic>).map((dynamic e) =>
+      _asT<T>(e, enumConvert: enumConvert)!).toList();
     } catch (e, stackTrace) {
       debugPrint('asT<$T> $e $stackTrace');
       if (onError != null) {
@@ -161,7 +165,8 @@ class JsonConvert {
           return covertFunc(Map<String, dynamic>.from(value)) as T;
         }
       } else {
-        throw UnimplementedError('$type unimplemented,you can try running the app again');
+        throw UnimplementedError(
+            '$type unimplemented,you can try running the app again');
       }
     }
   }
@@ -169,205 +174,277 @@ class JsonConvert {
   //list is returned by type
   static M? _getListChildType<M>(List<Map<String, dynamic>> data) {
     if (<AuthLoginEntity>[] is M) {
-      return data.map<AuthLoginEntity>((Map<String, dynamic> e) => AuthLoginEntity.fromJson(e)).toList() as M;
+      return data.map<AuthLoginEntity>((Map<String, dynamic> e) =>
+          AuthLoginEntity.fromJson(e)).toList() as M;
     }
     if (<CaptchaImgEntity>[] is M) {
-      return data.map<CaptchaImgEntity>((Map<String, dynamic> e) => CaptchaImgEntity.fromJson(e)).toList() as M;
+      return data.map<CaptchaImgEntity>((Map<String, dynamic> e) =>
+          CaptchaImgEntity.fromJson(e)).toList() as M;
     }
     if (<FacilityBookEntity>[] is M) {
-      return data.map<FacilityBookEntity>((Map<String, dynamic> e) => FacilityBookEntity.fromJson(e)).toList() as M;
+      return data.map<FacilityBookEntity>((Map<String, dynamic> e) =>
+          FacilityBookEntity.fromJson(e)).toList() as M;
     }
     if (<FacilityBookFacilityType>[] is M) {
-      return data.map<FacilityBookFacilityType>((Map<String, dynamic> e) => FacilityBookFacilityType.fromJson(e)).toList() as M;
+      return data.map<FacilityBookFacilityType>((Map<String, dynamic> e) =>
+          FacilityBookFacilityType.fromJson(e)).toList() as M;
     }
     if (<FacilityBookFacilities>[] is M) {
-      return data.map<FacilityBookFacilities>((Map<String, dynamic> e) => FacilityBookFacilities.fromJson(e)).toList() as M;
+      return data.map<FacilityBookFacilities>((Map<String, dynamic> e) =>
+          FacilityBookFacilities.fromJson(e)).toList() as M;
     }
     if (<FacilityBookFacilitiesPeriods>[] is M) {
-      return data.map<FacilityBookFacilitiesPeriods>((Map<String, dynamic> e) => FacilityBookFacilitiesPeriods.fromJson(e)).toList() as M;
+      return data.map<FacilityBookFacilitiesPeriods>((Map<String, dynamic> e) =>
+          FacilityBookFacilitiesPeriods.fromJson(e)).toList() as M;
     }
     if (<FacilityIndexEntity>[] is M) {
-      return data.map<FacilityIndexEntity>((Map<String, dynamic> e) => FacilityIndexEntity.fromJson(e)).toList() as M;
+      return data.map<FacilityIndexEntity>((Map<String, dynamic> e) =>
+          FacilityIndexEntity.fromJson(e)).toList() as M;
     }
     if (<FacilityPageEntity>[] is M) {
-      return data.map<FacilityPageEntity>((Map<String, dynamic> e) => FacilityPageEntity.fromJson(e)).toList() as M;
+      return data.map<FacilityPageEntity>((Map<String, dynamic> e) =>
+          FacilityPageEntity.fromJson(e)).toList() as M;
     }
     if (<FacilityDetail>[] is M) {
-      return data.map<FacilityDetail>((Map<String, dynamic> e) => FacilityDetail.fromJson(e)).toList() as M;
+      return data.map<FacilityDetail>((Map<String, dynamic> e) =>
+          FacilityDetail.fromJson(e)).toList() as M;
     }
     if (<FacilityPageListBooking>[] is M) {
-      return data.map<FacilityPageListBooking>((Map<String, dynamic> e) => FacilityPageListBooking.fromJson(e)).toList() as M;
+      return data.map<FacilityPageListBooking>((Map<String, dynamic> e) =>
+          FacilityPageListBooking.fromJson(e)).toList() as M;
     }
     if (<FacilityPageListFacility>[] is M) {
-      return data.map<FacilityPageListFacility>((Map<String, dynamic> e) => FacilityPageListFacility.fromJson(e)).toList() as M;
+      return data.map<FacilityPageListFacility>((Map<String, dynamic> e) =>
+          FacilityPageListFacility.fromJson(e)).toList() as M;
     }
     if (<FacilityPageListFacilityType>[] is M) {
-      return data.map<FacilityPageListFacilityType>((Map<String, dynamic> e) => FacilityPageListFacilityType.fromJson(e)).toList() as M;
+      return data.map<FacilityPageListFacilityType>((Map<String, dynamic> e) =>
+          FacilityPageListFacilityType.fromJson(e)).toList() as M;
     }
     if (<FacilityPageListTimePeriod>[] is M) {
-      return data.map<FacilityPageListTimePeriod>((Map<String, dynamic> e) => FacilityPageListTimePeriod.fromJson(e)).toList() as M;
+      return data.map<FacilityPageListTimePeriod>((Map<String, dynamic> e) =>
+          FacilityPageListTimePeriod.fromJson(e)).toList() as M;
     }
     if (<FacilityPageListAccount>[] is M) {
-      return data.map<FacilityPageListAccount>((Map<String, dynamic> e) => FacilityPageListAccount.fromJson(e)).toList() as M;
+      return data.map<FacilityPageListAccount>((Map<String, dynamic> e) =>
+          FacilityPageListAccount.fromJson(e)).toList() as M;
     }
     if (<FeedbackDetailEntity>[] is M) {
-      return data.map<FeedbackDetailEntity>((Map<String, dynamic> e) => FeedbackDetailEntity.fromJson(e)).toList() as M;
+      return data.map<FeedbackDetailEntity>((Map<String, dynamic> e) =>
+          FeedbackDetailEntity.fromJson(e)).toList() as M;
     }
     if (<FeedbackDetailReplies>[] is M) {
-      return data.map<FeedbackDetailReplies>((Map<String, dynamic> e) => FeedbackDetailReplies.fromJson(e)).toList() as M;
+      return data.map<FeedbackDetailReplies>((Map<String, dynamic> e) =>
+          FeedbackDetailReplies.fromJson(e)).toList() as M;
     }
     if (<FeedbackListEntity>[] is M) {
-      return data.map<FeedbackListEntity>((Map<String, dynamic> e) => FeedbackListEntity.fromJson(e)).toList() as M;
+      return data.map<FeedbackListEntity>((Map<String, dynamic> e) =>
+          FeedbackListEntity.fromJson(e)).toList() as M;
     }
     if (<FeedbackItemEntity>[] is M) {
-      return data.map<FeedbackItemEntity>((Map<String, dynamic> e) => FeedbackItemEntity.fromJson(e)).toList() as M;
+      return data.map<FeedbackItemEntity>((Map<String, dynamic> e) =>
+          FeedbackItemEntity.fromJson(e)).toList() as M;
     }
     if (<FormContentEntity>[] is M) {
-      return data.map<FormContentEntity>((Map<String, dynamic> e) => FormContentEntity.fromJson(e)).toList() as M;
+      return data.map<FormContentEntity>((Map<String, dynamic> e) =>
+          FormContentEntity.fromJson(e)).toList() as M;
     }
     if (<FormDetailEntity>[] is M) {
-      return data.map<FormDetailEntity>((Map<String, dynamic> e) => FormDetailEntity.fromJson(e)).toList() as M;
+      return data.map<FormDetailEntity>((Map<String, dynamic> e) =>
+          FormDetailEntity.fromJson(e)).toList() as M;
     }
     if (<FormListEntity>[] is M) {
-      return data.map<FormListEntity>((Map<String, dynamic> e) => FormListEntity.fromJson(e)).toList() as M;
+      return data.map<FormListEntity>((Map<String, dynamic> e) =>
+          FormListEntity.fromJson(e)).toList() as M;
     }
     if (<FormOptionEntity>[] is M) {
-      return data.map<FormOptionEntity>((Map<String, dynamic> e) => FormOptionEntity.fromJson(e)).toList() as M;
+      return data.map<FormOptionEntity>((Map<String, dynamic> e) =>
+          FormOptionEntity.fromJson(e)).toList() as M;
     }
     if (<FormSubmittedEntity>[] is M) {
-      return data.map<FormSubmittedEntity>((Map<String, dynamic> e) => FormSubmittedEntity.fromJson(e)).toList() as M;
+      return data.map<FormSubmittedEntity>((Map<String, dynamic> e) =>
+          FormSubmittedEntity.fromJson(e)).toList() as M;
     }
     if (<FormSubmittedEstateOnlineForm>[] is M) {
-      return data.map<FormSubmittedEstateOnlineForm>((Map<String, dynamic> e) => FormSubmittedEstateOnlineForm.fromJson(e)).toList() as M;
+      return data.map<FormSubmittedEstateOnlineForm>((Map<String, dynamic> e) =>
+          FormSubmittedEstateOnlineForm.fromJson(e)).toList() as M;
     }
     if (<FormSubmittedPageEntity>[] is M) {
-      return data.map<FormSubmittedPageEntity>((Map<String, dynamic> e) => FormSubmittedPageEntity.fromJson(e)).toList() as M;
+      return data.map<FormSubmittedPageEntity>((Map<String, dynamic> e) =>
+          FormSubmittedPageEntity.fromJson(e)).toList() as M;
     }
     if (<GarageSaleRentDetailEntity>[] is M) {
-      return data.map<GarageSaleRentDetailEntity>((Map<String, dynamic> e) => GarageSaleRentDetailEntity.fromJson(e)).toList() as M;
+      return data.map<GarageSaleRentDetailEntity>((Map<String, dynamic> e) =>
+          GarageSaleRentDetailEntity.fromJson(e)).toList() as M;
     }
     if (<GarageSaleRentDetailAccount>[] is M) {
-      return data.map<GarageSaleRentDetailAccount>((Map<String, dynamic> e) => GarageSaleRentDetailAccount.fromJson(e)).toList() as M;
+      return data.map<GarageSaleRentDetailAccount>((Map<String, dynamic> e) =>
+          GarageSaleRentDetailAccount.fromJson(e)).toList() as M;
     }
     if (<GarageSaleRentEntity>[] is M) {
-      return data.map<GarageSaleRentEntity>((Map<String, dynamic> e) => GarageSaleRentEntity.fromJson(e)).toList() as M;
+      return data.map<GarageSaleRentEntity>((Map<String, dynamic> e) =>
+          GarageSaleRentEntity.fromJson(e)).toList() as M;
+    }
+    if (<GarageSaleRentList>[] is M) {
+      return data.map<GarageSaleRentList>((Map<String, dynamic> e) =>
+          GarageSaleRentList.fromJson(e)).toList() as M;
     }
-    if (<GarageSaleRentAccount>[] is M) {
-      return data.map<GarageSaleRentAccount>((Map<String, dynamic> e) => GarageSaleRentAccount.fromJson(e)).toList() as M;
+    if (<GarageSaleRentListAccount>[] is M) {
+      return data.map<GarageSaleRentListAccount>((Map<String, dynamic> e) =>
+          GarageSaleRentListAccount.fromJson(e)).toList() as M;
     }
     if (<IdNameEntity>[] is M) {
-      return data.map<IdNameEntity>((Map<String, dynamic> e) => IdNameEntity.fromJson(e)).toList() as M;
+      return data.map<IdNameEntity>((Map<String, dynamic> e) =>
+          IdNameEntity.fromJson(e)).toList() as M;
     }
     if (<MyfollowingListEntity>[] is M) {
-      return data.map<MyfollowingListEntity>((Map<String, dynamic> e) => MyfollowingListEntity.fromJson(e)).toList() as M;
+      return data.map<MyfollowingListEntity>((Map<String, dynamic> e) =>
+          MyfollowingListEntity.fromJson(e)).toList() as M;
     }
     if (<MypostsNewsfeedEntity>[] is M) {
-      return data.map<MypostsNewsfeedEntity>((Map<String, dynamic> e) => MypostsNewsfeedEntity.fromJson(e)).toList() as M;
+      return data.map<MypostsNewsfeedEntity>((Map<String, dynamic> e) =>
+          MypostsNewsfeedEntity.fromJson(e)).toList() as M;
     }
     if (<MypostsNewsfeedList>[] is M) {
-      return data.map<MypostsNewsfeedList>((Map<String, dynamic> e) => MypostsNewsfeedList.fromJson(e)).toList() as M;
+      return data.map<MypostsNewsfeedList>((Map<String, dynamic> e) =>
+          MypostsNewsfeedList.fromJson(e)).toList() as M;
     }
     if (<MypostsNewsfeedListAccount>[] is M) {
-      return data.map<MypostsNewsfeedListAccount>((Map<String, dynamic> e) => MypostsNewsfeedListAccount.fromJson(e)).toList() as M;
+      return data.map<MypostsNewsfeedListAccount>((Map<String, dynamic> e) =>
+          MypostsNewsfeedListAccount.fromJson(e)).toList() as M;
     }
     if (<MypostsSaleRentEntity>[] is M) {
-      return data.map<MypostsSaleRentEntity>((Map<String, dynamic> e) => MypostsSaleRentEntity.fromJson(e)).toList() as M;
+      return data.map<MypostsSaleRentEntity>((Map<String, dynamic> e) =>
+          MypostsSaleRentEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedCommentPublishEntity>[] is M) {
-      return data.map<NewsfeedCommentPublishEntity>((Map<String, dynamic> e) => NewsfeedCommentPublishEntity.fromJson(e)).toList() as M;
+      return data.map<NewsfeedCommentPublishEntity>((Map<String, dynamic> e) =>
+          NewsfeedCommentPublishEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedDetailEntity>[] is M) {
-      return data.map<NewsfeedDetailEntity>((Map<String, dynamic> e) => NewsfeedDetailEntity.fromJson(e)).toList() as M;
+      return data.map<NewsfeedDetailEntity>((Map<String, dynamic> e) =>
+          NewsfeedDetailEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedDetailAccount>[] is M) {
-      return data.map<NewsfeedDetailAccount>((Map<String, dynamic> e) => NewsfeedDetailAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedDetailAccount>((Map<String, dynamic> e) =>
+          NewsfeedDetailAccount.fromJson(e)).toList() as M;
     }
     if (<NewsfeedDetailComments>[] is M) {
-      return data.map<NewsfeedDetailComments>((Map<String, dynamic> e) => NewsfeedDetailComments.fromJson(e)).toList() as M;
+      return data.map<NewsfeedDetailComments>((Map<String, dynamic> e) =>
+          NewsfeedDetailComments.fromJson(e)).toList() as M;
     }
     if (<NewsfeedDetailCommentsAccount>[] is M) {
-      return data.map<NewsfeedDetailCommentsAccount>((Map<String, dynamic> e) => NewsfeedDetailCommentsAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedDetailCommentsAccount>((Map<String, dynamic> e) =>
+          NewsfeedDetailCommentsAccount.fromJson(e)).toList() as M;
     }
     if (<NewsfeedDetailCommentsToAccount>[] is M) {
-      return data.map<NewsfeedDetailCommentsToAccount>((Map<String, dynamic> e) => NewsfeedDetailCommentsToAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedDetailCommentsToAccount>((
+          Map<String, dynamic> e) =>
+          NewsfeedDetailCommentsToAccount.fromJson(e)).toList() as M;
     }
     if (<NewsfeedFollowingEntity>[] is M) {
-      return data.map<NewsfeedFollowingEntity>((Map<String, dynamic> e) => NewsfeedFollowingEntity.fromJson(e)).toList() as M;
+      return data.map<NewsfeedFollowingEntity>((Map<String, dynamic> e) =>
+          NewsfeedFollowingEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedFollowingList>[] is M) {
-      return data.map<NewsfeedFollowingList>((Map<String, dynamic> e) => NewsfeedFollowingList.fromJson(e)).toList() as M;
+      return data.map<NewsfeedFollowingList>((Map<String, dynamic> e) =>
+          NewsfeedFollowingList.fromJson(e)).toList() as M;
     }
     if (<NewsfeedFollowingListAccount>[] is M) {
-      return data.map<NewsfeedFollowingListAccount>((Map<String, dynamic> e) => NewsfeedFollowingListAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedFollowingListAccount>((Map<String, dynamic> e) =>
+          NewsfeedFollowingListAccount.fromJson(e)).toList() as M;
     }
     if (<NewsfeedForyouEntity>[] is M) {
-      return data.map<NewsfeedForyouEntity>((Map<String, dynamic> e) => NewsfeedForyouEntity.fromJson(e)).toList() as M;
+      return data.map<NewsfeedForyouEntity>((Map<String, dynamic> e) =>
+          NewsfeedForyouEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedForyouList>[] is M) {
-      return data.map<NewsfeedForyouList>((Map<String, dynamic> e) => NewsfeedForyouList.fromJson(e)).toList() as M;
+      return data.map<NewsfeedForyouList>((Map<String, dynamic> e) =>
+          NewsfeedForyouList.fromJson(e)).toList() as M;
     }
     if (<NewsfeedForyouListAccount>[] is M) {
-      return data.map<NewsfeedForyouListAccount>((Map<String, dynamic> e) => NewsfeedForyouListAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedForyouListAccount>((Map<String, dynamic> e) =>
+          NewsfeedForyouListAccount.fromJson(e)).toList() as M;
     }
     if (<NewsfeedNewsEntity>[] is M) {
-      return data.map<NewsfeedNewsEntity>((Map<String, dynamic> e) => NewsfeedNewsEntity.fromJson(e)).toList() as M;
+      return data.map<NewsfeedNewsEntity>((Map<String, dynamic> e) =>
+          NewsfeedNewsEntity.fromJson(e)).toList() as M;
     }
     if (<NewsfeedNewsList>[] is M) {
-      return data.map<NewsfeedNewsList>((Map<String, dynamic> e) => NewsfeedNewsList.fromJson(e)).toList() as M;
+      return data.map<NewsfeedNewsList>((Map<String, dynamic> e) =>
+          NewsfeedNewsList.fromJson(e)).toList() as M;
     }
     if (<NewsfeedNewsListAccount>[] is M) {
-      return data.map<NewsfeedNewsListAccount>((Map<String, dynamic> e) => NewsfeedNewsListAccount.fromJson(e)).toList() as M;
+      return data.map<NewsfeedNewsListAccount>((Map<String, dynamic> e) =>
+          NewsfeedNewsListAccount.fromJson(e)).toList() as M;
     }
     if (<NoticeBoardAnnounEntity>[] is M) {
-      return data.map<NoticeBoardAnnounEntity>((Map<String, dynamic> e) => NoticeBoardAnnounEntity.fromJson(e)).toList() as M;
+      return data.map<NoticeBoardAnnounEntity>((Map<String, dynamic> e) =>
+          NoticeBoardAnnounEntity.fromJson(e)).toList() as M;
     }
     if (<NoticeBoardDocumentsEntity>[] is M) {
-      return data.map<NoticeBoardDocumentsEntity>((Map<String, dynamic> e) => NoticeBoardDocumentsEntity.fromJson(e)).toList() as M;
+      return data.map<NoticeBoardDocumentsEntity>((Map<String, dynamic> e) =>
+          NoticeBoardDocumentsEntity.fromJson(e)).toList() as M;
     }
     if (<NoticeBoardEventEntity>[] is M) {
-      return data.map<NoticeBoardEventEntity>((Map<String, dynamic> e) => NoticeBoardEventEntity.fromJson(e)).toList() as M;
+      return data.map<NoticeBoardEventEntity>((Map<String, dynamic> e) =>
+          NoticeBoardEventEntity.fromJson(e)).toList() as M;
     }
     if (<PropertyNewsEntity>[] is M) {
-      return data.map<PropertyNewsEntity>((Map<String, dynamic> e) => PropertyNewsEntity.fromJson(e)).toList() as M;
+      return data.map<PropertyNewsEntity>((Map<String, dynamic> e) =>
+          PropertyNewsEntity.fromJson(e)).toList() as M;
     }
     if (<PropertyNewsList>[] is M) {
-      return data.map<PropertyNewsList>((Map<String, dynamic> e) => PropertyNewsList.fromJson(e)).toList() as M;
+      return data.map<PropertyNewsList>((Map<String, dynamic> e) =>
+          PropertyNewsList.fromJson(e)).toList() as M;
     }
     if (<PropertySaleRentEntity>[] is M) {
-      return data.map<PropertySaleRentEntity>((Map<String, dynamic> e) => PropertySaleRentEntity.fromJson(e)).toList() as M;
+      return data.map<PropertySaleRentEntity>((Map<String, dynamic> e) =>
+          PropertySaleRentEntity.fromJson(e)).toList() as M;
     }
     if (<PropertySaleRentList>[] is M) {
-      return data.map<PropertySaleRentList>((Map<String, dynamic> e) => PropertySaleRentList.fromJson(e)).toList() as M;
+      return data.map<PropertySaleRentList>((Map<String, dynamic> e) =>
+          PropertySaleRentList.fromJson(e)).toList() as M;
     }
     if (<ServerTime>[] is M) {
-      return data.map<ServerTime>((Map<String, dynamic> e) => ServerTime.fromJson(e)).toList() as M;
+      return data.map<ServerTime>((Map<String, dynamic> e) =>
+          ServerTime.fromJson(e)).toList() as M;
     }
     if (<UserMeEntity>[] is M) {
-      return data.map<UserMeEntity>((Map<String, dynamic> e) => UserMeEntity.fromJson(e)).toList() as M;
+      return data.map<UserMeEntity>((Map<String, dynamic> e) =>
+          UserMeEntity.fromJson(e)).toList() as M;
     }
     if (<UserMeHouseholds>[] is M) {
-      return data.map<UserMeHouseholds>((Map<String, dynamic> e) => UserMeHouseholds.fromJson(e)).toList() as M;
+      return data.map<UserMeHouseholds>((Map<String, dynamic> e) =>
+          UserMeHouseholds.fromJson(e)).toList() as M;
     }
     if (<UserMeEstates>[] is M) {
-      return data.map<UserMeEstates>((Map<String, dynamic> e) => UserMeEstates.fromJson(e)).toList() as M;
+      return data.map<UserMeEstates>((Map<String, dynamic> e) =>
+          UserMeEstates.fromJson(e)).toList() as M;
     }
     if (<UserMeEstatesAccounts>[] is M) {
-      return data.map<UserMeEstatesAccounts>((Map<String, dynamic> e) => UserMeEstatesAccounts.fromJson(e)).toList() as M;
+      return data.map<UserMeEstatesAccounts>((Map<String, dynamic> e) =>
+          UserMeEstatesAccounts.fromJson(e)).toList() as M;
     }
     if (<UserMeEstatesAccountsUnit>[] is M) {
-      return data.map<UserMeEstatesAccountsUnit>((Map<String, dynamic> e) => UserMeEstatesAccountsUnit.fromJson(e)).toList() as M;
+      return data.map<UserMeEstatesAccountsUnit>((Map<String, dynamic> e) =>
+          UserMeEstatesAccountsUnit.fromJson(e)).toList() as M;
     }
     if (<UserMeDefaultUnit>[] is M) {
-      return data.map<UserMeDefaultUnit>((Map<String, dynamic> e) => UserMeDefaultUnit.fromJson(e)).toList() as M;
+      return data.map<UserMeDefaultUnit>((Map<String, dynamic> e) =>
+          UserMeDefaultUnit.fromJson(e)).toList() as M;
     }
     if (<UserMeInformation>[] is M) {
-      return data.map<UserMeInformation>((Map<String, dynamic> e) => UserMeInformation.fromJson(e)).toList() as M;
+      return data.map<UserMeInformation>((Map<String, dynamic> e) =>
+          UserMeInformation.fromJson(e)).toList() as M;
     }
     if (<VisitorPageEntity>[] is M) {
-      return data.map<VisitorPageEntity>((Map<String, dynamic> e) => VisitorPageEntity.fromJson(e)).toList() as M;
+      return data.map<VisitorPageEntity>((Map<String, dynamic> e) =>
+          VisitorPageEntity.fromJson(e)).toList() as M;
     }
     if (<VisitorPageList>[] is M) {
-      return data.map<VisitorPageList>((Map<String, dynamic> e) => VisitorPageList.fromJson(e)).toList() as M;
+      return data.map<VisitorPageList>((Map<String, dynamic> e) =>
+          VisitorPageList.fromJson(e)).toList() as M;
     }
 
     debugPrint("$M not found");
@@ -380,7 +457,8 @@ class JsonConvert {
       return json;
     }
     if (json is List) {
-      return _getListChildType<M>(json.map((dynamic e) => e as Map<String, dynamic>).toList());
+      return _getListChildType<M>(
+          json.map((dynamic e) => e as Map<String, dynamic>).toList());
     } else {
       return jsonConvert.convert<M>(json);
     }
@@ -394,14 +472,17 @@ class JsonConvertClassCollection {
     (FacilityBookEntity).toString(): FacilityBookEntity.fromJson,
     (FacilityBookFacilityType).toString(): FacilityBookFacilityType.fromJson,
     (FacilityBookFacilities).toString(): FacilityBookFacilities.fromJson,
-    (FacilityBookFacilitiesPeriods).toString(): FacilityBookFacilitiesPeriods.fromJson,
+    (FacilityBookFacilitiesPeriods).toString(): FacilityBookFacilitiesPeriods
+        .fromJson,
     (FacilityIndexEntity).toString(): FacilityIndexEntity.fromJson,
     (FacilityPageEntity).toString(): FacilityPageEntity.fromJson,
     (FacilityDetail).toString(): FacilityDetail.fromJson,
     (FacilityPageListBooking).toString(): FacilityPageListBooking.fromJson,
     (FacilityPageListFacility).toString(): FacilityPageListFacility.fromJson,
-    (FacilityPageListFacilityType).toString(): FacilityPageListFacilityType.fromJson,
-    (FacilityPageListTimePeriod).toString(): FacilityPageListTimePeriod.fromJson,
+    (FacilityPageListFacilityType).toString(): FacilityPageListFacilityType
+        .fromJson,
+    (FacilityPageListTimePeriod).toString(): FacilityPageListTimePeriod
+        .fromJson,
     (FacilityPageListAccount).toString(): FacilityPageListAccount.fromJson,
     (FeedbackDetailEntity).toString(): FeedbackDetailEntity.fromJson,
     (FeedbackDetailReplies).toString(): FeedbackDetailReplies.fromJson,
@@ -412,27 +493,36 @@ class JsonConvertClassCollection {
     (FormListEntity).toString(): FormListEntity.fromJson,
     (FormOptionEntity).toString(): FormOptionEntity.fromJson,
     (FormSubmittedEntity).toString(): FormSubmittedEntity.fromJson,
-    (FormSubmittedEstateOnlineForm).toString(): FormSubmittedEstateOnlineForm.fromJson,
+    (FormSubmittedEstateOnlineForm).toString(): FormSubmittedEstateOnlineForm
+        .fromJson,
     (FormSubmittedPageEntity).toString(): FormSubmittedPageEntity.fromJson,
-    (GarageSaleRentDetailEntity).toString(): GarageSaleRentDetailEntity.fromJson,
-    (GarageSaleRentDetailAccount).toString(): GarageSaleRentDetailAccount.fromJson,
+    (GarageSaleRentDetailEntity).toString(): GarageSaleRentDetailEntity
+        .fromJson,
+    (GarageSaleRentDetailAccount).toString(): GarageSaleRentDetailAccount
+        .fromJson,
     (GarageSaleRentEntity).toString(): GarageSaleRentEntity.fromJson,
-    (GarageSaleRentAccount).toString(): GarageSaleRentAccount.fromJson,
+    (GarageSaleRentList).toString(): GarageSaleRentList.fromJson,
+    (GarageSaleRentListAccount).toString(): GarageSaleRentListAccount.fromJson,
     (IdNameEntity).toString(): IdNameEntity.fromJson,
     (MyfollowingListEntity).toString(): MyfollowingListEntity.fromJson,
     (MypostsNewsfeedEntity).toString(): MypostsNewsfeedEntity.fromJson,
     (MypostsNewsfeedList).toString(): MypostsNewsfeedList.fromJson,
-    (MypostsNewsfeedListAccount).toString(): MypostsNewsfeedListAccount.fromJson,
+    (MypostsNewsfeedListAccount).toString(): MypostsNewsfeedListAccount
+        .fromJson,
     (MypostsSaleRentEntity).toString(): MypostsSaleRentEntity.fromJson,
-    (NewsfeedCommentPublishEntity).toString(): NewsfeedCommentPublishEntity.fromJson,
+    (NewsfeedCommentPublishEntity).toString(): NewsfeedCommentPublishEntity
+        .fromJson,
     (NewsfeedDetailEntity).toString(): NewsfeedDetailEntity.fromJson,
     (NewsfeedDetailAccount).toString(): NewsfeedDetailAccount.fromJson,
     (NewsfeedDetailComments).toString(): NewsfeedDetailComments.fromJson,
-    (NewsfeedDetailCommentsAccount).toString(): NewsfeedDetailCommentsAccount.fromJson,
-    (NewsfeedDetailCommentsToAccount).toString(): NewsfeedDetailCommentsToAccount.fromJson,
+    (NewsfeedDetailCommentsAccount).toString(): NewsfeedDetailCommentsAccount
+        .fromJson,
+    (NewsfeedDetailCommentsToAccount)
+        .toString(): NewsfeedDetailCommentsToAccount.fromJson,
     (NewsfeedFollowingEntity).toString(): NewsfeedFollowingEntity.fromJson,
     (NewsfeedFollowingList).toString(): NewsfeedFollowingList.fromJson,
-    (NewsfeedFollowingListAccount).toString(): NewsfeedFollowingListAccount.fromJson,
+    (NewsfeedFollowingListAccount).toString(): NewsfeedFollowingListAccount
+        .fromJson,
     (NewsfeedForyouEntity).toString(): NewsfeedForyouEntity.fromJson,
     (NewsfeedForyouList).toString(): NewsfeedForyouList.fromJson,
     (NewsfeedForyouListAccount).toString(): NewsfeedForyouListAccount.fromJson,
@@ -440,7 +530,8 @@ class JsonConvertClassCollection {
     (NewsfeedNewsList).toString(): NewsfeedNewsList.fromJson,
     (NewsfeedNewsListAccount).toString(): NewsfeedNewsListAccount.fromJson,
     (NoticeBoardAnnounEntity).toString(): NoticeBoardAnnounEntity.fromJson,
-    (NoticeBoardDocumentsEntity).toString(): NoticeBoardDocumentsEntity.fromJson,
+    (NoticeBoardDocumentsEntity).toString(): NoticeBoardDocumentsEntity
+        .fromJson,
     (NoticeBoardEventEntity).toString(): NoticeBoardEventEntity.fromJson,
     (PropertyNewsEntity).toString(): PropertyNewsEntity.fromJson,
     (PropertyNewsList).toString(): PropertyNewsList.fromJson,

+ 31 - 14
packages/cs_domain/lib/generated/json/facility_book_entity.g.dart

@@ -7,16 +7,22 @@ FacilityBookEntity $FacilityBookEntityFromJson(Map<String, dynamic> json) {
   if (remainQuota != null) {
     facilityBookEntity.remainQuota = remainQuota;
   }
-  final String? quotaResetOn = jsonConvert.convert<String>(json['quota_reset_on']);
+  final String? quotaResetOn = jsonConvert.convert<String>(
+      json['quota_reset_on']);
   if (quotaResetOn != null) {
     facilityBookEntity.quotaResetOn = quotaResetOn;
   }
-  final FacilityBookFacilityType? facilityType = jsonConvert.convert<FacilityBookFacilityType>(json['facility_type']);
+  final FacilityBookFacilityType? facilityType = jsonConvert.convert<
+      FacilityBookFacilityType>(json['facility_type']);
   if (facilityType != null) {
     facilityBookEntity.facilityType = facilityType;
   }
-  final List<FacilityBookFacilities>? facilities = (json['facilities'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FacilityBookFacilities>(e) as FacilityBookFacilities).toList();
+  final List<FacilityBookFacilities>? facilities = (json['facilities'] as List<
+      dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<FacilityBookFacilities>(e) as FacilityBookFacilities)
+      .toList();
   if (facilities != null) {
     facilityBookEntity.facilities = facilities;
   }
@@ -47,9 +53,11 @@ extension FacilityBookEntityExtension on FacilityBookEntity {
   }
 }
 
-FacilityBookFacilityType $FacilityBookFacilityTypeFromJson(Map<String, dynamic> json) {
+FacilityBookFacilityType $FacilityBookFacilityTypeFromJson(
+    Map<String, dynamic> json) {
   final FacilityBookFacilityType facilityBookFacilityType = FacilityBookFacilityType();
-  final int? bookAdvanceDays = jsonConvert.convert<int>(json['book_advance_days']);
+  final int? bookAdvanceDays = jsonConvert.convert<int>(
+      json['book_advance_days']);
   if (bookAdvanceDays != null) {
     facilityBookFacilityType.bookAdvanceDays = bookAdvanceDays;
   }
@@ -57,14 +65,16 @@ FacilityBookFacilityType $FacilityBookFacilityTypeFromJson(Map<String, dynamic>
   if (quota != null) {
     facilityBookFacilityType.quota = quota;
   }
-  final String? quotaResetType = jsonConvert.convert<String>(json['quota_reset_type']);
+  final String? quotaResetType = jsonConvert.convert<String>(
+      json['quota_reset_type']);
   if (quotaResetType != null) {
     facilityBookFacilityType.quotaResetType = quotaResetType;
   }
   return facilityBookFacilityType;
 }
 
-Map<String, dynamic> $FacilityBookFacilityTypeToJson(FacilityBookFacilityType entity) {
+Map<String, dynamic> $FacilityBookFacilityTypeToJson(
+    FacilityBookFacilityType entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['book_advance_days'] = entity.bookAdvanceDays;
   data['quota'] = entity.quota;
@@ -85,7 +95,8 @@ extension FacilityBookFacilityTypeExtension on FacilityBookFacilityType {
   }
 }
 
-FacilityBookFacilities $FacilityBookFacilitiesFromJson(Map<String, dynamic> json) {
+FacilityBookFacilities $FacilityBookFacilitiesFromJson(
+    Map<String, dynamic> json) {
   final FacilityBookFacilities facilityBookFacilities = FacilityBookFacilities();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -95,15 +106,19 @@ FacilityBookFacilities $FacilityBookFacilitiesFromJson(Map<String, dynamic> json
   if (name != null) {
     facilityBookFacilities.name = name;
   }
-  final List<FacilityBookFacilitiesPeriods>? periods = (json['periods'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FacilityBookFacilitiesPeriods>(e) as FacilityBookFacilitiesPeriods).toList();
+  final List<FacilityBookFacilitiesPeriods>? periods = (json['periods'] as List<
+      dynamic>?)?.map(
+          (e) =>
+      jsonConvert.convert<FacilityBookFacilitiesPeriods>(
+          e) as FacilityBookFacilitiesPeriods).toList();
   if (periods != null) {
     facilityBookFacilities.periods = periods;
   }
   return facilityBookFacilities;
 }
 
-Map<String, dynamic> $FacilityBookFacilitiesToJson(FacilityBookFacilities entity) {
+Map<String, dynamic> $FacilityBookFacilitiesToJson(
+    FacilityBookFacilities entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -124,7 +139,8 @@ extension FacilityBookFacilitiesExtension on FacilityBookFacilities {
   }
 }
 
-FacilityBookFacilitiesPeriods $FacilityBookFacilitiesPeriodsFromJson(Map<String, dynamic> json) {
+FacilityBookFacilitiesPeriods $FacilityBookFacilitiesPeriodsFromJson(
+    Map<String, dynamic> json) {
   final FacilityBookFacilitiesPeriods facilityBookFacilitiesPeriods = FacilityBookFacilitiesPeriods();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -157,7 +173,8 @@ FacilityBookFacilitiesPeriods $FacilityBookFacilitiesPeriodsFromJson(Map<String,
   return facilityBookFacilitiesPeriods;
 }
 
-Map<String, dynamic> $FacilityBookFacilitiesPeriodsToJson(FacilityBookFacilitiesPeriods entity) {
+Map<String, dynamic> $FacilityBookFacilitiesPeriodsToJson(
+    FacilityBookFacilitiesPeriods entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['start'] = entity.start;

+ 40 - 20
packages/cs_domain/lib/generated/json/facility_page_entity.g.dart

@@ -19,12 +19,15 @@ FacilityPageEntity $FacilityPageEntityFromJson(Map<String, dynamic> json) {
   if (countPage != null) {
     facilityPageEntity.countPage = countPage;
   }
-  final String? totalDeposit = jsonConvert.convert<String>(json['total_deposit']);
+  final String? totalDeposit = jsonConvert.convert<String>(
+      json['total_deposit']);
   if (totalDeposit != null) {
     facilityPageEntity.totalDeposit = totalDeposit;
   }
-  final List<FacilityDetail>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FacilityDetail>(e) as FacilityDetail).toList();
+  final List<FacilityDetail>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<FacilityDetail>(e) as FacilityDetail)
+      .toList();
   if (list != null) {
     facilityPageEntity.list = list;
   }
@@ -63,19 +66,23 @@ extension FacilityPageEntityExtension on FacilityPageEntity {
 
 FacilityDetail $FacilityDetailFromJson(Map<String, dynamic> json) {
   final FacilityDetail facilityDetail = FacilityDetail();
-  final FacilityPageListBooking? booking = jsonConvert.convert<FacilityPageListBooking>(json['booking']);
+  final FacilityPageListBooking? booking = jsonConvert.convert<
+      FacilityPageListBooking>(json['booking']);
   if (booking != null) {
     facilityDetail.booking = booking;
   }
-  final FacilityPageListFacility? facility = jsonConvert.convert<FacilityPageListFacility>(json['facility']);
+  final FacilityPageListFacility? facility = jsonConvert.convert<
+      FacilityPageListFacility>(json['facility']);
   if (facility != null) {
     facilityDetail.facility = facility;
   }
-  final FacilityPageListTimePeriod? timePeriod = jsonConvert.convert<FacilityPageListTimePeriod>(json['time_period']);
+  final FacilityPageListTimePeriod? timePeriod = jsonConvert.convert<
+      FacilityPageListTimePeriod>(json['time_period']);
   if (timePeriod != null) {
     facilityDetail.timePeriod = timePeriod;
   }
-  final FacilityPageListAccount? account = jsonConvert.convert<FacilityPageListAccount>(json['account']);
+  final FacilityPageListAccount? account = jsonConvert.convert<
+      FacilityPageListAccount>(json['account']);
   if (account != null) {
     facilityDetail.account = account;
   }
@@ -106,7 +113,8 @@ extension FacilityDetailExtension on FacilityDetail {
   }
 }
 
-FacilityPageListBooking $FacilityPageListBookingFromJson(Map<String, dynamic> json) {
+FacilityPageListBooking $FacilityPageListBookingFromJson(
+    Map<String, dynamic> json) {
   final FacilityPageListBooking facilityPageListBooking = FacilityPageListBooking();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -128,18 +136,21 @@ FacilityPageListBooking $FacilityPageListBookingFromJson(Map<String, dynamic> js
   if (depositPaid != null) {
     facilityPageListBooking.depositPaid = depositPaid;
   }
-  final String? depositRefund = jsonConvert.convert<String>(json['deposit_refund']);
+  final String? depositRefund = jsonConvert.convert<String>(
+      json['deposit_refund']);
   if (depositRefund != null) {
     facilityPageListBooking.depositRefund = depositRefund;
   }
-  final String? depositRefundAt = jsonConvert.convert<String>(json['deposit_refund_at']);
+  final String? depositRefundAt = jsonConvert.convert<String>(
+      json['deposit_refund_at']);
   if (depositRefundAt != null) {
     facilityPageListBooking.depositRefundAt = depositRefundAt;
   }
   return facilityPageListBooking;
 }
 
-Map<String, dynamic> $FacilityPageListBookingToJson(FacilityPageListBooking entity) {
+Map<String, dynamic> $FacilityPageListBookingToJson(
+    FacilityPageListBooking entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['date'] = entity.date;
@@ -172,7 +183,8 @@ extension FacilityPageListBookingExtension on FacilityPageListBooking {
   }
 }
 
-FacilityPageListFacility $FacilityPageListFacilityFromJson(Map<String, dynamic> json) {
+FacilityPageListFacility $FacilityPageListFacilityFromJson(
+    Map<String, dynamic> json) {
   final FacilityPageListFacility facilityPageListFacility = FacilityPageListFacility();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -182,14 +194,16 @@ FacilityPageListFacility $FacilityPageListFacilityFromJson(Map<String, dynamic>
   if (name != null) {
     facilityPageListFacility.name = name;
   }
-  final FacilityPageListFacilityType? type = jsonConvert.convert<FacilityPageListFacilityType>(json['type']);
+  final FacilityPageListFacilityType? type = jsonConvert.convert<
+      FacilityPageListFacilityType>(json['type']);
   if (type != null) {
     facilityPageListFacility.type = type;
   }
   return facilityPageListFacility;
 }
 
-Map<String, dynamic> $FacilityPageListFacilityToJson(FacilityPageListFacility entity) {
+Map<String, dynamic> $FacilityPageListFacilityToJson(
+    FacilityPageListFacility entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -210,7 +224,8 @@ extension FacilityPageListFacilityExtension on FacilityPageListFacility {
   }
 }
 
-FacilityPageListFacilityType $FacilityPageListFacilityTypeFromJson(Map<String, dynamic> json) {
+FacilityPageListFacilityType $FacilityPageListFacilityTypeFromJson(
+    Map<String, dynamic> json) {
   final FacilityPageListFacilityType facilityPageListFacilityType = FacilityPageListFacilityType();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -223,7 +238,8 @@ FacilityPageListFacilityType $FacilityPageListFacilityTypeFromJson(Map<String, d
   return facilityPageListFacilityType;
 }
 
-Map<String, dynamic> $FacilityPageListFacilityTypeToJson(FacilityPageListFacilityType entity) {
+Map<String, dynamic> $FacilityPageListFacilityTypeToJson(
+    FacilityPageListFacilityType entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -241,7 +257,8 @@ extension FacilityPageListFacilityTypeExtension on FacilityPageListFacilityType
   }
 }
 
-FacilityPageListTimePeriod $FacilityPageListTimePeriodFromJson(Map<String, dynamic> json) {
+FacilityPageListTimePeriod $FacilityPageListTimePeriodFromJson(
+    Map<String, dynamic> json) {
   final FacilityPageListTimePeriod facilityPageListTimePeriod = FacilityPageListTimePeriod();
   final String? price = jsonConvert.convert<String>(json['price']);
   if (price != null) {
@@ -254,7 +271,8 @@ FacilityPageListTimePeriod $FacilityPageListTimePeriodFromJson(Map<String, dynam
   return facilityPageListTimePeriod;
 }
 
-Map<String, dynamic> $FacilityPageListTimePeriodToJson(FacilityPageListTimePeriod entity) {
+Map<String, dynamic> $FacilityPageListTimePeriodToJson(
+    FacilityPageListTimePeriod entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['price'] = entity.price;
   data['deposit'] = entity.deposit;
@@ -272,7 +290,8 @@ extension FacilityPageListTimePeriodExtension on FacilityPageListTimePeriod {
   }
 }
 
-FacilityPageListAccount $FacilityPageListAccountFromJson(Map<String, dynamic> json) {
+FacilityPageListAccount $FacilityPageListAccountFromJson(
+    Map<String, dynamic> json) {
   final FacilityPageListAccount facilityPageListAccount = FacilityPageListAccount();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -285,7 +304,8 @@ FacilityPageListAccount $FacilityPageListAccountFromJson(Map<String, dynamic> js
   return facilityPageListAccount;
 }
 
-Map<String, dynamic> $FacilityPageListAccountToJson(FacilityPageListAccount entity) {
+Map<String, dynamic> $FacilityPageListAccountToJson(
+    FacilityPageListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 14 - 6
packages/cs_domain/lib/generated/json/feedback_detail_entity.g.dart

@@ -30,12 +30,17 @@ FeedbackDetailEntity $FeedbackDetailEntityFromJson(Map<String, dynamic> json) {
   if (createdAt != null) {
     feedbackDetailEntity.createdAt = createdAt;
   }
-  final IdNameEntity? category = jsonConvert.convert<IdNameEntity>(json['category']);
+  final IdNameEntity? category = jsonConvert.convert<IdNameEntity>(
+      json['category']);
   if (category != null) {
     feedbackDetailEntity.category = category;
   }
-  final List<FeedbackDetailReplies>? replies = (json['replies'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FeedbackDetailReplies>(e) as FeedbackDetailReplies).toList();
+  final List<FeedbackDetailReplies>? replies = (json['replies'] as List<
+      dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<FeedbackDetailReplies>(e) as FeedbackDetailReplies)
+      .toList();
   if (replies != null) {
     feedbackDetailEntity.replies = replies;
   }
@@ -78,7 +83,8 @@ extension FeedbackDetailEntityExtension on FeedbackDetailEntity {
   }
 }
 
-FeedbackDetailReplies $FeedbackDetailRepliesFromJson(Map<String, dynamic> json) {
+FeedbackDetailReplies $FeedbackDetailRepliesFromJson(
+    Map<String, dynamic> json) {
   final FeedbackDetailReplies feedbackDetailReplies = FeedbackDetailReplies();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -97,14 +103,16 @@ FeedbackDetailReplies $FeedbackDetailRepliesFromJson(Map<String, dynamic> json)
   if (createdAt != null) {
     feedbackDetailReplies.createdAt = createdAt;
   }
-  final IdNameEntity? accountable = jsonConvert.convert<IdNameEntity>(json['accountable']);
+  final IdNameEntity? accountable = jsonConvert.convert<IdNameEntity>(
+      json['accountable']);
   if (accountable != null) {
     feedbackDetailReplies.accountable = accountable;
   }
   return feedbackDetailReplies;
 }
 
-Map<String, dynamic> $FeedbackDetailRepliesToJson(FeedbackDetailReplies entity) {
+Map<String, dynamic> $FeedbackDetailRepliesToJson(
+    FeedbackDetailReplies entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['content'] = entity.content;

+ 7 - 3
packages/cs_domain/lib/generated/json/feedback_list_entity.g.dart

@@ -21,8 +21,11 @@ FeedbackListEntity $FeedbackListEntityFromJson(Map<String, dynamic> json) {
   if (limit != null) {
     feedbackListEntity.limit = limit;
   }
-  final List<FeedbackItemEntity>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FeedbackItemEntity>(e) as FeedbackItemEntity).toList();
+  final List<FeedbackItemEntity>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<FeedbackItemEntity>(e) as FeedbackItemEntity)
+      .toList();
   if (list != null) {
     feedbackListEntity.list = list;
   }
@@ -78,7 +81,8 @@ FeedbackItemEntity $FeedbackItemEntityFromJson(Map<String, dynamic> json) {
   if (createdAt != null) {
     feedbackItemEntity.createdAt = createdAt;
   }
-  final IdNameEntity? category = jsonConvert.convert<IdNameEntity>(json['category']);
+  final IdNameEntity? category = jsonConvert.convert<IdNameEntity>(
+      json['category']);
   if (category != null) {
     feedbackItemEntity.category = category;
   }

+ 46 - 23
packages/cs_domain/lib/generated/json/form_content_entity.g.dart

@@ -5,20 +5,25 @@ import 'dart:typed_data';
 
 FormContentEntity $FormContentEntityFromJson(Map<String, dynamic> json) {
   final FormContentEntity formContentEntity = FormContentEntity();
-  final String? typeOfApplication = jsonConvert.convert<String>(json['type_of_application']);
+  final String? typeOfApplication = jsonConvert.convert<String>(
+      json['type_of_application']);
   if (typeOfApplication != null) {
     formContentEntity.typeOfApplication = typeOfApplication;
   }
-  final String? notesToRecipient = jsonConvert.convert<String>(json['notes_to_recipient']);
+  final String? notesToRecipient = jsonConvert.convert<String>(
+      json['notes_to_recipient']);
   if (notesToRecipient != null) {
     formContentEntity.notesToRecipient = notesToRecipient;
   }
-  final String? notesToManagement = jsonConvert.convert<String>(json['notes_to_management']);
+  final String? notesToManagement = jsonConvert.convert<String>(
+      json['notes_to_management']);
   if (notesToManagement != null) {
     formContentEntity.notesToManagement = notesToManagement;
   }
-  final List<String>? attachments = (json['attachments'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<String>(e) as String).toList();
+  final List<String>? attachments = (json['attachments'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<String>(e) as String)
+      .toList();
   if (attachments != null) {
     formContentEntity.attachments = attachments;
   }
@@ -30,11 +35,13 @@ FormContentEntity $FormContentEntityFromJson(Map<String, dynamic> json) {
   if (signatureByteData != null) {
     formContentEntity.signatureByteData = signatureByteData;
   }
-  final String? ownershipStatus = jsonConvert.convert<String>(json['ownership_status']);
+  final String? ownershipStatus = jsonConvert.convert<String>(
+      json['ownership_status']);
   if (ownershipStatus != null) {
     formContentEntity.ownershipStatus = ownershipStatus;
   }
-  final String? vehicleNumber = jsonConvert.convert<String>(json['vehicle_number']);
+  final String? vehicleNumber = jsonConvert.convert<String>(
+      json['vehicle_number']);
   if (vehicleNumber != null) {
     formContentEntity.vehicleNumber = vehicleNumber;
   }
@@ -42,7 +49,8 @@ FormContentEntity $FormContentEntityFromJson(Map<String, dynamic> json) {
   if (iuNumber != null) {
     formContentEntity.iuNumber = iuNumber;
   }
-  final String? vehicleMakeModelColour = jsonConvert.convert<String>(json['vehicle_make_model_colour']);
+  final String? vehicleMakeModelColour = jsonConvert.convert<String>(
+      json['vehicle_make_model_colour']);
   if (vehicleMakeModelColour != null) {
     formContentEntity.vehicleMakeModelColour = vehicleMakeModelColour;
   }
@@ -54,27 +62,33 @@ FormContentEntity $FormContentEntityFromJson(Map<String, dynamic> json) {
   if (endDate != null) {
     formContentEntity.endDate = endDate;
   }
-  final String? timeOrArrival = jsonConvert.convert<String>(json['time_or_arrival']);
+  final String? timeOrArrival = jsonConvert.convert<String>(
+      json['time_or_arrival']);
   if (timeOrArrival != null) {
     formContentEntity.timeOrArrival = timeOrArrival;
   }
-  final String? movingCompany = jsonConvert.convert<String>(json['moving_company']);
+  final String? movingCompany = jsonConvert.convert<String>(
+      json['moving_company']);
   if (movingCompany != null) {
     formContentEntity.movingCompany = movingCompany;
   }
-  final String? personInCharge = jsonConvert.convert<String>(json['person_in_charge']);
+  final String? personInCharge = jsonConvert.convert<String>(
+      json['person_in_charge']);
   if (personInCharge != null) {
     formContentEntity.personInCharge = personInCharge;
   }
-  final String? mobileNumber = jsonConvert.convert<String>(json['mobile_number']);
+  final String? mobileNumber = jsonConvert.convert<String>(
+      json['mobile_number']);
   if (mobileNumber != null) {
     formContentEntity.mobileNumber = mobileNumber;
   }
-  final String? companyAddress = jsonConvert.convert<String>(json['company_address']);
+  final String? companyAddress = jsonConvert.convert<String>(
+      json['company_address']);
   if (companyAddress != null) {
     formContentEntity.companyAddress = companyAddress;
   }
-  final String? dateOfEntry = jsonConvert.convert<String>(json['date_of_entry']);
+  final String? dateOfEntry = jsonConvert.convert<String>(
+      json['date_of_entry']);
   if (dateOfEntry != null) {
     formContentEntity.dateOfEntry = dateOfEntry;
   }
@@ -82,31 +96,38 @@ FormContentEntity $FormContentEntityFromJson(Map<String, dynamic> json) {
   if (guestName != null) {
     formContentEntity.guestName = guestName;
   }
-  final String? guestMobileNumber = jsonConvert.convert<String>(json['guest_mobile_number']);
+  final String? guestMobileNumber = jsonConvert.convert<String>(
+      json['guest_mobile_number']);
   if (guestMobileNumber != null) {
     formContentEntity.guestMobileNumber = guestMobileNumber;
   }
-  final String? renovationStartDate = jsonConvert.convert<String>(json['renovation_start_date']);
+  final String? renovationStartDate = jsonConvert.convert<String>(
+      json['renovation_start_date']);
   if (renovationStartDate != null) {
     formContentEntity.renovationStartDate = renovationStartDate;
   }
-  final String? renovationEndDate = jsonConvert.convert<String>(json['renovation_end_date']);
+  final String? renovationEndDate = jsonConvert.convert<String>(
+      json['renovation_end_date']);
   if (renovationEndDate != null) {
     formContentEntity.renovationEndDate = renovationEndDate;
   }
-  final String? hackingStartDate = jsonConvert.convert<String>(json['hacking_start_date']);
+  final String? hackingStartDate = jsonConvert.convert<String>(
+      json['hacking_start_date']);
   if (hackingStartDate != null) {
     formContentEntity.hackingStartDate = hackingStartDate;
   }
-  final String? hackingEndDate = jsonConvert.convert<String>(json['hacking_end_date']);
+  final String? hackingEndDate = jsonConvert.convert<String>(
+      json['hacking_end_date']);
   if (hackingEndDate != null) {
     formContentEntity.hackingEndDate = hackingEndDate;
   }
-  final String? renovationCompany = jsonConvert.convert<String>(json['renovation_company']);
+  final String? renovationCompany = jsonConvert.convert<String>(
+      json['renovation_company']);
   if (renovationCompany != null) {
     formContentEntity.renovationCompany = renovationCompany;
   }
-  final String? listOfRenovationWorks = jsonConvert.convert<String>(json['list_of_renovation_works']);
+  final String? listOfRenovationWorks = jsonConvert.convert<String>(
+      json['list_of_renovation_works']);
   if (listOfRenovationWorks != null) {
     formContentEntity.listOfRenovationWorks = listOfRenovationWorks;
   }
@@ -183,7 +204,8 @@ extension FormContentEntityExtension on FormContentEntity {
       ..ownershipStatus = ownershipStatus ?? this.ownershipStatus
       ..vehicleNumber = vehicleNumber ?? this.vehicleNumber
       ..iuNumber = iuNumber ?? this.iuNumber
-      ..vehicleMakeModelColour = vehicleMakeModelColour ?? this.vehicleMakeModelColour
+      ..vehicleMakeModelColour = vehicleMakeModelColour ??
+          this.vehicleMakeModelColour
       ..startDate = startDate ?? this.startDate
       ..endDate = endDate ?? this.endDate
       ..timeOrArrival = timeOrArrival ?? this.timeOrArrival
@@ -199,6 +221,7 @@ extension FormContentEntityExtension on FormContentEntity {
       ..hackingStartDate = hackingStartDate ?? this.hackingStartDate
       ..hackingEndDate = hackingEndDate ?? this.hackingEndDate
       ..renovationCompany = renovationCompany ?? this.renovationCompany
-      ..listOfRenovationWorks = listOfRenovationWorks ?? this.listOfRenovationWorks;
+      ..listOfRenovationWorks = listOfRenovationWorks ??
+          this.listOfRenovationWorks;
   }
 }

+ 2 - 1
packages/cs_domain/lib/generated/json/form_detail_entity.g.dart

@@ -13,7 +13,8 @@ FormDetailEntity $FormDetailEntityFromJson(Map<String, dynamic> json) {
   if (userId != null) {
     formDetailEntity.userId = userId;
   }
-  final FormContentEntity? content = jsonConvert.convert<FormContentEntity>(json['content']);
+  final FormContentEntity? content = jsonConvert.convert<FormContentEntity>(
+      json['content']);
   if (content != null) {
     formDetailEntity.content = content;
   }

+ 2 - 1
packages/cs_domain/lib/generated/json/form_list_entity.g.dart

@@ -7,7 +7,8 @@ FormListEntity $FormListEntityFromJson(Map<String, dynamic> json) {
   if (id != null) {
     formListEntity.id = id;
   }
-  final String? typeId = jsonConvert.convert<String>(json['online_form_type_id']);
+  final String? typeId = jsonConvert.convert<String>(
+      json['online_form_type_id']);
   if (typeId != null) {
     formListEntity.typeId = typeId;
   }

+ 4 - 2
packages/cs_domain/lib/generated/json/form_option_entity.g.dart

@@ -3,12 +3,14 @@ import 'package:domain/entity/form_option_entity.dart';
 
 FormOptionEntity $FormOptionEntityFromJson(Map<String, dynamic> json) {
   final FormOptionEntity formOptionEntity = FormOptionEntity();
-  final List<String>? typeOfApplication = (json['type_of_application'] as List<dynamic>?)?.map(
+  final List<String>? typeOfApplication = (json['type_of_application'] as List<
+      dynamic>?)?.map(
           (e) => jsonConvert.convert<String>(e) as String).toList();
   if (typeOfApplication != null) {
     formOptionEntity.typeOfApplication = typeOfApplication;
   }
-  final List<String>? ownershipStatus = (json['ownership_status'] as List<dynamic>?)?.map(
+  final List<String>? ownershipStatus = (json['ownership_status'] as List<
+      dynamic>?)?.map(
           (e) => jsonConvert.convert<String>(e) as String).toList();
   if (ownershipStatus != null) {
     formOptionEntity.ownershipStatus = ownershipStatus;

+ 12 - 6
packages/cs_domain/lib/generated/json/form_submitted_entity.g.dart

@@ -15,11 +15,13 @@ FormSubmittedEntity $FormSubmittedEntityFromJson(Map<String, dynamic> json) {
   if (userId != null) {
     formSubmittedEntity.userId = userId;
   }
-  final String? estateOnlineFormId = jsonConvert.convert<String>(json['estate_online_form_id']);
+  final String? estateOnlineFormId = jsonConvert.convert<String>(
+      json['estate_online_form_id']);
   if (estateOnlineFormId != null) {
     formSubmittedEntity.estateOnlineFormId = estateOnlineFormId;
   }
-  final FormContentEntity? content = jsonConvert.convert<FormContentEntity>(json['content']);
+  final FormContentEntity? content = jsonConvert.convert<FormContentEntity>(
+      json['content']);
   if (content != null) {
     formSubmittedEntity.content = content;
   }
@@ -35,11 +37,13 @@ FormSubmittedEntity $FormSubmittedEntityFromJson(Map<String, dynamic> json) {
   if (approvedOn != null) {
     formSubmittedEntity.approvedOn = approvedOn;
   }
-  final FormSubmittedEstateOnlineForm? estateOnlineForm = jsonConvert.convert<FormSubmittedEstateOnlineForm>(json['estate_online_form']);
+  final FormSubmittedEstateOnlineForm? estateOnlineForm = jsonConvert.convert<
+      FormSubmittedEstateOnlineForm>(json['estate_online_form']);
   if (estateOnlineForm != null) {
     formSubmittedEntity.estateOnlineForm = estateOnlineForm;
   }
-  final IdNameEntity? account = jsonConvert.convert<IdNameEntity>(json['account']);
+  final IdNameEntity? account = jsonConvert.convert<IdNameEntity>(
+      json['account']);
   if (account != null) {
     formSubmittedEntity.account = account;
   }
@@ -85,7 +89,8 @@ extension FormSubmittedEntityExtension on FormSubmittedEntity {
   }
 }
 
-FormSubmittedEstateOnlineForm $FormSubmittedEstateOnlineFormFromJson(Map<String, dynamic> json) {
+FormSubmittedEstateOnlineForm $FormSubmittedEstateOnlineFormFromJson(
+    Map<String, dynamic> json) {
   final FormSubmittedEstateOnlineForm formSubmittedEstateOnlineForm = FormSubmittedEstateOnlineForm();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -106,7 +111,8 @@ FormSubmittedEstateOnlineForm $FormSubmittedEstateOnlineFormFromJson(Map<String,
   return formSubmittedEstateOnlineForm;
 }
 
-Map<String, dynamic> $FormSubmittedEstateOnlineFormToJson(FormSubmittedEstateOnlineForm entity) {
+Map<String, dynamic> $FormSubmittedEstateOnlineFormToJson(
+    FormSubmittedEstateOnlineForm entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['icon'] = entity.icon;

+ 9 - 4
packages/cs_domain/lib/generated/json/form_submitted_page_entity.g.dart

@@ -3,7 +3,8 @@ import 'package:domain/entity/form_submitted_page_entity.dart';
 import 'package:domain/entity/form_submitted_entity.dart';
 
 
-FormSubmittedPageEntity $FormSubmittedPageEntityFromJson(Map<String, dynamic> json) {
+FormSubmittedPageEntity $FormSubmittedPageEntityFromJson(
+    Map<String, dynamic> json) {
   final FormSubmittedPageEntity formSubmittedPageEntity = FormSubmittedPageEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -21,15 +22,19 @@ FormSubmittedPageEntity $FormSubmittedPageEntityFromJson(Map<String, dynamic> js
   if (countPage != null) {
     formSubmittedPageEntity.countPage = countPage;
   }
-  final List<FormSubmittedEntity>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<FormSubmittedEntity>(e) as FormSubmittedEntity).toList();
+  final List<FormSubmittedEntity>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<FormSubmittedEntity>(e) as FormSubmittedEntity)
+      .toList();
   if (list != null) {
     formSubmittedPageEntity.list = list;
   }
   return formSubmittedPageEntity;
 }
 
-Map<String, dynamic> $FormSubmittedPageEntityToJson(FormSubmittedPageEntity entity) {
+Map<String, dynamic> $FormSubmittedPageEntityToJson(
+    FormSubmittedPageEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;

+ 24 - 5
packages/cs_domain/lib/generated/json/garage_sale_rent_detail_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/garage_sale_rent_detail_entity.dart';
 
-GarageSaleRentDetailEntity $GarageSaleRentDetailEntityFromJson(Map<String, dynamic> json) {
+GarageSaleRentDetailEntity $GarageSaleRentDetailEntityFromJson(
+    Map<String, dynamic> json) {
   final GarageSaleRentDetailEntity garageSaleRentDetailEntity = GarageSaleRentDetailEntity();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -28,14 +29,24 @@ GarageSaleRentDetailEntity $GarageSaleRentDetailEntityFromJson(Map<String, dynam
   if (createdAt != null) {
     garageSaleRentDetailEntity.createdAt = createdAt;
   }
-  final GarageSaleRentDetailAccount? account = jsonConvert.convert<GarageSaleRentDetailAccount>(json['account']);
+  final int? likesCount = jsonConvert.convert<int>(json['likes_count']);
+  if (likesCount != null) {
+    garageSaleRentDetailEntity.likesCount = likesCount;
+  }
+  final String? contact = jsonConvert.convert<String>(json['contact']);
+  if (contact != null) {
+    garageSaleRentDetailEntity.contact = contact;
+  }
+  final GarageSaleRentDetailAccount? account = jsonConvert.convert<
+      GarageSaleRentDetailAccount>(json['account']);
   if (account != null) {
     garageSaleRentDetailEntity.account = account;
   }
   return garageSaleRentDetailEntity;
 }
 
-Map<String, dynamic> $GarageSaleRentDetailEntityToJson(GarageSaleRentDetailEntity entity) {
+Map<String, dynamic> $GarageSaleRentDetailEntityToJson(
+    GarageSaleRentDetailEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['title'] = entity.title;
@@ -43,6 +54,8 @@ Map<String, dynamic> $GarageSaleRentDetailEntityToJson(GarageSaleRentDetailEntit
   data['description'] = entity.description;
   data['resources'] = entity.resources;
   data['created_at'] = entity.createdAt;
+  data['likes_count'] = entity.likesCount;
+  data['contact'] = entity.contact;
   data['account'] = entity.account?.toJson();
   return data;
 }
@@ -55,6 +68,8 @@ extension GarageSaleRentDetailEntityExtension on GarageSaleRentDetailEntity {
     String? description,
     List<String>? resources,
     String? createdAt,
+    int? likesCount,
+    String? contact,
     GarageSaleRentDetailAccount? account,
   }) {
     return GarageSaleRentDetailEntity()
@@ -64,11 +79,14 @@ extension GarageSaleRentDetailEntityExtension on GarageSaleRentDetailEntity {
       ..description = description ?? this.description
       ..resources = resources ?? this.resources
       ..createdAt = createdAt ?? this.createdAt
+      ..likesCount = likesCount ?? this.likesCount
+      ..contact = contact ?? this.contact
       ..account = account ?? this.account;
   }
 }
 
-GarageSaleRentDetailAccount $GarageSaleRentDetailAccountFromJson(Map<String, dynamic> json) {
+GarageSaleRentDetailAccount $GarageSaleRentDetailAccountFromJson(
+    Map<String, dynamic> json) {
   final GarageSaleRentDetailAccount garageSaleRentDetailAccount = GarageSaleRentDetailAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -85,7 +103,8 @@ GarageSaleRentDetailAccount $GarageSaleRentDetailAccountFromJson(Map<String, dyn
   return garageSaleRentDetailAccount;
 }
 
-Map<String, dynamic> $GarageSaleRentDetailAccountToJson(GarageSaleRentDetailAccount entity) {
+Map<String, dynamic> $GarageSaleRentDetailAccountToJson(
+    GarageSaleRentDetailAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 92 - 33
packages/cs_domain/lib/generated/json/garage_sale_rent_entity.g.dart

@@ -3,43 +3,100 @@ import 'package:domain/entity/garage_sale_rent_entity.dart';
 
 GarageSaleRentEntity $GarageSaleRentEntityFromJson(Map<String, dynamic> json) {
   final GarageSaleRentEntity garageSaleRentEntity = GarageSaleRentEntity();
-  final double? id = jsonConvert.convert<double>(json['id']);
+  final int? count = jsonConvert.convert<int>(json['count']);
+  if (count != null) {
+    garageSaleRentEntity.count = count;
+  }
+  final int? page = jsonConvert.convert<int>(json['page']);
+  if (page != null) {
+    garageSaleRentEntity.page = page;
+  }
+  final int? limit = jsonConvert.convert<int>(json['limit']);
+  if (limit != null) {
+    garageSaleRentEntity.limit = limit;
+  }
+  final int? countPage = jsonConvert.convert<int>(json['count_page']);
+  if (countPage != null) {
+    garageSaleRentEntity.countPage = countPage;
+  }
+  final List<GarageSaleRentList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<GarageSaleRentList>(e) as GarageSaleRentList)
+      .toList();
+  if (list != null) {
+    garageSaleRentEntity.list = list;
+  }
+  return garageSaleRentEntity;
+}
+
+Map<String, dynamic> $GarageSaleRentEntityToJson(GarageSaleRentEntity entity) {
+  final Map<String, dynamic> data = <String, dynamic>{};
+  data['count'] = entity.count;
+  data['page'] = entity.page;
+  data['limit'] = entity.limit;
+  data['count_page'] = entity.countPage;
+  data['list'] = entity.list?.map((v) => v.toJson()).toList();
+  return data;
+}
+
+extension GarageSaleRentEntityExtension on GarageSaleRentEntity {
+  GarageSaleRentEntity copyWith({
+    int? count,
+    int? page,
+    int? limit,
+    int? countPage,
+    List<GarageSaleRentList>? list,
+  }) {
+    return GarageSaleRentEntity()
+      ..count = count ?? this.count
+      ..page = page ?? this.page
+      ..limit = limit ?? this.limit
+      ..countPage = countPage ?? this.countPage
+      ..list = list ?? this.list;
+  }
+}
+
+GarageSaleRentList $GarageSaleRentListFromJson(Map<String, dynamic> json) {
+  final GarageSaleRentList garageSaleRentList = GarageSaleRentList();
+  final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
-    garageSaleRentEntity.id = id;
+    garageSaleRentList.id = id;
   }
   final String? title = jsonConvert.convert<String>(json['title']);
   if (title != null) {
-    garageSaleRentEntity.title = title;
+    garageSaleRentList.title = title;
   }
-  final double? price = jsonConvert.convert<double>(json['price']);
+  final int? price = jsonConvert.convert<int>(json['price']);
   if (price != null) {
-    garageSaleRentEntity.price = price;
+    garageSaleRentList.price = price;
   }
   final List<String>? resources = (json['resources'] as List<dynamic>?)?.map(
           (e) => jsonConvert.convert<String>(e) as String).toList();
   if (resources != null) {
-    garageSaleRentEntity.resources = resources;
+    garageSaleRentList.resources = resources;
   }
   final String? createdAt = jsonConvert.convert<String>(json['created_at']);
   if (createdAt != null) {
-    garageSaleRentEntity.createdAt = createdAt;
+    garageSaleRentList.createdAt = createdAt;
   }
   final bool? liked = jsonConvert.convert<bool>(json['liked']);
   if (liked != null) {
-    garageSaleRentEntity.liked = liked;
+    garageSaleRentList.liked = liked;
   }
-  final double? likesCount = jsonConvert.convert<double>(json['likes_count']);
+  final int? likesCount = jsonConvert.convert<int>(json['likes_count']);
   if (likesCount != null) {
-    garageSaleRentEntity.likesCount = likesCount;
+    garageSaleRentList.likesCount = likesCount;
   }
-  final GarageSaleRentAccount? account = jsonConvert.convert<GarageSaleRentAccount>(json['account']);
+  final GarageSaleRentListAccount? account = jsonConvert.convert<
+      GarageSaleRentListAccount>(json['account']);
   if (account != null) {
-    garageSaleRentEntity.account = account;
+    garageSaleRentList.account = account;
   }
-  return garageSaleRentEntity;
+  return garageSaleRentList;
 }
 
-Map<String, dynamic> $GarageSaleRentEntityToJson(GarageSaleRentEntity entity) {
+Map<String, dynamic> $GarageSaleRentListToJson(GarageSaleRentList entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['title'] = entity.title;
@@ -52,18 +109,18 @@ Map<String, dynamic> $GarageSaleRentEntityToJson(GarageSaleRentEntity entity) {
   return data;
 }
 
-extension GarageSaleRentEntityExtension on GarageSaleRentEntity {
-  GarageSaleRentEntity copyWith({
-    double? id,
+extension GarageSaleRentListExtension on GarageSaleRentList {
+  GarageSaleRentList copyWith({
+    int? id,
     String? title,
-    double? price,
+    int? price,
     List<String>? resources,
     String? createdAt,
     bool? liked,
-    double? likesCount,
-    GarageSaleRentAccount? account,
+    int? likesCount,
+    GarageSaleRentListAccount? account,
   }) {
-    return GarageSaleRentEntity()
+    return GarageSaleRentList()
       ..id = id ?? this.id
       ..title = title ?? this.title
       ..price = price ?? this.price
@@ -75,24 +132,26 @@ extension GarageSaleRentEntityExtension on GarageSaleRentEntity {
   }
 }
 
-GarageSaleRentAccount $GarageSaleRentAccountFromJson(Map<String, dynamic> json) {
-  final GarageSaleRentAccount garageSaleRentAccount = GarageSaleRentAccount();
-  final double? id = jsonConvert.convert<double>(json['id']);
+GarageSaleRentListAccount $GarageSaleRentListAccountFromJson(
+    Map<String, dynamic> json) {
+  final GarageSaleRentListAccount garageSaleRentListAccount = GarageSaleRentListAccount();
+  final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
-    garageSaleRentAccount.id = id;
+    garageSaleRentListAccount.id = id;
   }
   final String? name = jsonConvert.convert<String>(json['name']);
   if (name != null) {
-    garageSaleRentAccount.name = name;
+    garageSaleRentListAccount.name = name;
   }
   final String? avatar = jsonConvert.convert<String>(json['avatar']);
   if (avatar != null) {
-    garageSaleRentAccount.avatar = avatar;
+    garageSaleRentListAccount.avatar = avatar;
   }
-  return garageSaleRentAccount;
+  return garageSaleRentListAccount;
 }
 
-Map<String, dynamic> $GarageSaleRentAccountToJson(GarageSaleRentAccount entity) {
+Map<String, dynamic> $GarageSaleRentListAccountToJson(
+    GarageSaleRentListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -100,13 +159,13 @@ Map<String, dynamic> $GarageSaleRentAccountToJson(GarageSaleRentAccount entity)
   return data;
 }
 
-extension GarageSaleRentAccountExtension on GarageSaleRentAccount {
-  GarageSaleRentAccount copyWith({
-    double? id,
+extension GarageSaleRentListAccountExtension on GarageSaleRentListAccount {
+  GarageSaleRentListAccount copyWith({
+    int? id,
     String? name,
     String? avatar,
   }) {
-    return GarageSaleRentAccount()
+    return GarageSaleRentListAccount()
       ..id = id ?? this.id
       ..name = name ?? this.name
       ..avatar = avatar ?? this.avatar;

+ 4 - 2
packages/cs_domain/lib/generated/json/myfollowing_list_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/myfollowing_list_entity.dart';
 
-MyfollowingListEntity $MyfollowingListEntityFromJson(Map<String, dynamic> json) {
+MyfollowingListEntity $MyfollowingListEntityFromJson(
+    Map<String, dynamic> json) {
   final MyfollowingListEntity myfollowingListEntity = MyfollowingListEntity();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -18,7 +19,8 @@ MyfollowingListEntity $MyfollowingListEntityFromJson(Map<String, dynamic> json)
   return myfollowingListEntity;
 }
 
-Map<String, dynamic> $MyfollowingListEntityToJson(MyfollowingListEntity entity) {
+Map<String, dynamic> $MyfollowingListEntityToJson(
+    MyfollowingListEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 15 - 7
packages/cs_domain/lib/generated/json/myposts_newsfeed_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/myposts_newsfeed_entity.dart';
 
-MypostsNewsfeedEntity $MypostsNewsfeedEntityFromJson(Map<String, dynamic> json) {
+MypostsNewsfeedEntity $MypostsNewsfeedEntityFromJson(
+    Map<String, dynamic> json) {
   final MypostsNewsfeedEntity mypostsNewsfeedEntity = MypostsNewsfeedEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -19,15 +20,19 @@ MypostsNewsfeedEntity $MypostsNewsfeedEntityFromJson(Map<String, dynamic> json)
   if (countPage != null) {
     mypostsNewsfeedEntity.countPage = countPage;
   }
-  final List<MypostsNewsfeedList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<MypostsNewsfeedList>(e) as MypostsNewsfeedList).toList();
+  final List<MypostsNewsfeedList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<MypostsNewsfeedList>(e) as MypostsNewsfeedList)
+      .toList();
   if (list != null) {
     mypostsNewsfeedEntity.list = list;
   }
   return mypostsNewsfeedEntity;
 }
 
-Map<String, dynamic> $MypostsNewsfeedEntityToJson(MypostsNewsfeedEntity entity) {
+Map<String, dynamic> $MypostsNewsfeedEntityToJson(
+    MypostsNewsfeedEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;
@@ -85,7 +90,8 @@ MypostsNewsfeedList $MypostsNewsfeedListFromJson(Map<String, dynamic> json) {
   if (createdAt != null) {
     mypostsNewsfeedList.createdAt = createdAt;
   }
-  final MypostsNewsfeedListAccount? account = jsonConvert.convert<MypostsNewsfeedListAccount>(json['account']);
+  final MypostsNewsfeedListAccount? account = jsonConvert.convert<
+      MypostsNewsfeedListAccount>(json['account']);
   if (account != null) {
     mypostsNewsfeedList.account = account;
   }
@@ -128,7 +134,8 @@ extension MypostsNewsfeedListExtension on MypostsNewsfeedList {
   }
 }
 
-MypostsNewsfeedListAccount $MypostsNewsfeedListAccountFromJson(Map<String, dynamic> json) {
+MypostsNewsfeedListAccount $MypostsNewsfeedListAccountFromJson(
+    Map<String, dynamic> json) {
   final MypostsNewsfeedListAccount mypostsNewsfeedListAccount = MypostsNewsfeedListAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -149,7 +156,8 @@ MypostsNewsfeedListAccount $MypostsNewsfeedListAccountFromJson(Map<String, dynam
   return mypostsNewsfeedListAccount;
 }
 
-Map<String, dynamic> $MypostsNewsfeedListAccountToJson(MypostsNewsfeedListAccount entity) {
+Map<String, dynamic> $MypostsNewsfeedListAccountToJson(
+    MypostsNewsfeedListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 4 - 2
packages/cs_domain/lib/generated/json/myposts_sale_rent_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/myposts_sale_rent_entity.dart';
 
-MypostsSaleRentEntity $MypostsSaleRentEntityFromJson(Map<String, dynamic> json) {
+MypostsSaleRentEntity $MypostsSaleRentEntityFromJson(
+    Map<String, dynamic> json) {
   final MypostsSaleRentEntity mypostsSaleRentEntity = MypostsSaleRentEntity();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -31,7 +32,8 @@ MypostsSaleRentEntity $MypostsSaleRentEntityFromJson(Map<String, dynamic> json)
   return mypostsSaleRentEntity;
 }
 
-Map<String, dynamic> $MypostsSaleRentEntityToJson(MypostsSaleRentEntity entity) {
+Map<String, dynamic> $MypostsSaleRentEntityToJson(
+    MypostsSaleRentEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['title'] = entity.title;

+ 4 - 2
packages/cs_domain/lib/generated/json/newsfeed_comment_publish_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/newsfeed_comment_publish_entity.dart';
 
-NewsfeedCommentPublishEntity $NewsfeedCommentPublishEntityFromJson(Map<String, dynamic> json) {
+NewsfeedCommentPublishEntity $NewsfeedCommentPublishEntityFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedCommentPublishEntity newsfeedCommentPublishEntity = NewsfeedCommentPublishEntity();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -18,7 +19,8 @@ NewsfeedCommentPublishEntity $NewsfeedCommentPublishEntityFromJson(Map<String, d
   return newsfeedCommentPublishEntity;
 }
 
-Map<String, dynamic> $NewsfeedCommentPublishEntityToJson(NewsfeedCommentPublishEntity entity) {
+Map<String, dynamic> $NewsfeedCommentPublishEntityToJson(
+    NewsfeedCommentPublishEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['content'] = entity.content;

+ 28 - 13
packages/cs_domain/lib/generated/json/newsfeed_detail_entity.g.dart

@@ -40,12 +40,17 @@ NewsfeedDetailEntity $NewsfeedDetailEntityFromJson(Map<String, dynamic> json) {
   if (liked != null) {
     newsfeedDetailEntity.liked = liked;
   }
-  final NewsfeedDetailAccount? account = jsonConvert.convert<NewsfeedDetailAccount>(json['account']);
+  final NewsfeedDetailAccount? account = jsonConvert.convert<
+      NewsfeedDetailAccount>(json['account']);
   if (account != null) {
     newsfeedDetailEntity.account = account;
   }
-  final List<NewsfeedDetailComments>? comments = (json['comments'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<NewsfeedDetailComments>(e) as NewsfeedDetailComments).toList();
+  final List<NewsfeedDetailComments>? comments = (json['comments'] as List<
+      dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<NewsfeedDetailComments>(e) as NewsfeedDetailComments)
+      .toList();
   if (comments != null) {
     newsfeedDetailEntity.comments = comments;
   }
@@ -97,7 +102,8 @@ extension NewsfeedDetailEntityExtension on NewsfeedDetailEntity {
   }
 }
 
-NewsfeedDetailAccount $NewsfeedDetailAccountFromJson(Map<String, dynamic> json) {
+NewsfeedDetailAccount $NewsfeedDetailAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedDetailAccount newsfeedDetailAccount = NewsfeedDetailAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -118,7 +124,8 @@ NewsfeedDetailAccount $NewsfeedDetailAccountFromJson(Map<String, dynamic> json)
   return newsfeedDetailAccount;
 }
 
-Map<String, dynamic> $NewsfeedDetailAccountToJson(NewsfeedDetailAccount entity) {
+Map<String, dynamic> $NewsfeedDetailAccountToJson(
+    NewsfeedDetailAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -142,7 +149,8 @@ extension NewsfeedDetailAccountExtension on NewsfeedDetailAccount {
   }
 }
 
-NewsfeedDetailComments $NewsfeedDetailCommentsFromJson(Map<String, dynamic> json) {
+NewsfeedDetailComments $NewsfeedDetailCommentsFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedDetailComments newsfeedDetailComments = NewsfeedDetailComments();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -156,18 +164,21 @@ NewsfeedDetailComments $NewsfeedDetailCommentsFromJson(Map<String, dynamic> json
   if (createdAt != null) {
     newsfeedDetailComments.createdAt = createdAt;
   }
-  final NewsfeedDetailCommentsAccount? account = jsonConvert.convert<NewsfeedDetailCommentsAccount>(json['account']);
+  final NewsfeedDetailCommentsAccount? account = jsonConvert.convert<
+      NewsfeedDetailCommentsAccount>(json['account']);
   if (account != null) {
     newsfeedDetailComments.account = account;
   }
-  final NewsfeedDetailCommentsToAccount? toAccount = jsonConvert.convert<NewsfeedDetailCommentsToAccount>(json['to_account']);
+  final NewsfeedDetailCommentsToAccount? toAccount = jsonConvert.convert<
+      NewsfeedDetailCommentsToAccount>(json['to_account']);
   if (toAccount != null) {
     newsfeedDetailComments.toAccount = toAccount;
   }
   return newsfeedDetailComments;
 }
 
-Map<String, dynamic> $NewsfeedDetailCommentsToJson(NewsfeedDetailComments entity) {
+Map<String, dynamic> $NewsfeedDetailCommentsToJson(
+    NewsfeedDetailComments entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['content'] = entity.content;
@@ -194,7 +205,8 @@ extension NewsfeedDetailCommentsExtension on NewsfeedDetailComments {
   }
 }
 
-NewsfeedDetailCommentsAccount $NewsfeedDetailCommentsAccountFromJson(Map<String, dynamic> json) {
+NewsfeedDetailCommentsAccount $NewsfeedDetailCommentsAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedDetailCommentsAccount newsfeedDetailCommentsAccount = NewsfeedDetailCommentsAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -211,7 +223,8 @@ NewsfeedDetailCommentsAccount $NewsfeedDetailCommentsAccountFromJson(Map<String,
   return newsfeedDetailCommentsAccount;
 }
 
-Map<String, dynamic> $NewsfeedDetailCommentsAccountToJson(NewsfeedDetailCommentsAccount entity) {
+Map<String, dynamic> $NewsfeedDetailCommentsAccountToJson(
+    NewsfeedDetailCommentsAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -232,7 +245,8 @@ extension NewsfeedDetailCommentsAccountExtension on NewsfeedDetailCommentsAccoun
   }
 }
 
-NewsfeedDetailCommentsToAccount $NewsfeedDetailCommentsToAccountFromJson(Map<String, dynamic> json) {
+NewsfeedDetailCommentsToAccount $NewsfeedDetailCommentsToAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedDetailCommentsToAccount newsfeedDetailCommentsToAccount = NewsfeedDetailCommentsToAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -249,7 +263,8 @@ NewsfeedDetailCommentsToAccount $NewsfeedDetailCommentsToAccountFromJson(Map<Str
   return newsfeedDetailCommentsToAccount;
 }
 
-Map<String, dynamic> $NewsfeedDetailCommentsToAccountToJson(NewsfeedDetailCommentsToAccount entity) {
+Map<String, dynamic> $NewsfeedDetailCommentsToAccountToJson(
+    NewsfeedDetailCommentsToAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 19 - 9
packages/cs_domain/lib/generated/json/newsfeed_following_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/newsfeed_following_entity.dart';
 
-NewsfeedFollowingEntity $NewsfeedFollowingEntityFromJson(Map<String, dynamic> json) {
+NewsfeedFollowingEntity $NewsfeedFollowingEntityFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedFollowingEntity newsfeedFollowingEntity = NewsfeedFollowingEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -19,15 +20,19 @@ NewsfeedFollowingEntity $NewsfeedFollowingEntityFromJson(Map<String, dynamic> js
   if (countPage != null) {
     newsfeedFollowingEntity.countPage = countPage;
   }
-  final List<NewsfeedFollowingList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<NewsfeedFollowingList>(e) as NewsfeedFollowingList).toList();
+  final List<NewsfeedFollowingList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<NewsfeedFollowingList>(e) as NewsfeedFollowingList)
+      .toList();
   if (list != null) {
     newsfeedFollowingEntity.list = list;
   }
   return newsfeedFollowingEntity;
 }
 
-Map<String, dynamic> $NewsfeedFollowingEntityToJson(NewsfeedFollowingEntity entity) {
+Map<String, dynamic> $NewsfeedFollowingEntityToJson(
+    NewsfeedFollowingEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;
@@ -54,7 +59,8 @@ extension NewsfeedFollowingEntityExtension on NewsfeedFollowingEntity {
   }
 }
 
-NewsfeedFollowingList $NewsfeedFollowingListFromJson(Map<String, dynamic> json) {
+NewsfeedFollowingList $NewsfeedFollowingListFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedFollowingList newsfeedFollowingList = NewsfeedFollowingList();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -85,14 +91,16 @@ NewsfeedFollowingList $NewsfeedFollowingListFromJson(Map<String, dynamic> json)
   if (createdAt != null) {
     newsfeedFollowingList.createdAt = createdAt;
   }
-  final NewsfeedFollowingListAccount? account = jsonConvert.convert<NewsfeedFollowingListAccount>(json['account']);
+  final NewsfeedFollowingListAccount? account = jsonConvert.convert<
+      NewsfeedFollowingListAccount>(json['account']);
   if (account != null) {
     newsfeedFollowingList.account = account;
   }
   return newsfeedFollowingList;
 }
 
-Map<String, dynamic> $NewsfeedFollowingListToJson(NewsfeedFollowingList entity) {
+Map<String, dynamic> $NewsfeedFollowingListToJson(
+    NewsfeedFollowingList entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['content'] = entity.content;
@@ -128,7 +136,8 @@ extension NewsfeedFollowingListExtension on NewsfeedFollowingList {
   }
 }
 
-NewsfeedFollowingListAccount $NewsfeedFollowingListAccountFromJson(Map<String, dynamic> json) {
+NewsfeedFollowingListAccount $NewsfeedFollowingListAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedFollowingListAccount newsfeedFollowingListAccount = NewsfeedFollowingListAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -149,7 +158,8 @@ NewsfeedFollowingListAccount $NewsfeedFollowingListAccountFromJson(Map<String, d
   return newsfeedFollowingListAccount;
 }
 
-Map<String, dynamic> $NewsfeedFollowingListAccountToJson(NewsfeedFollowingListAccount entity) {
+Map<String, dynamic> $NewsfeedFollowingListAccountToJson(
+    NewsfeedFollowingListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 11 - 5
packages/cs_domain/lib/generated/json/newsfeed_foryou_entity.g.dart

@@ -19,8 +19,11 @@ NewsfeedForyouEntity $NewsfeedForyouEntityFromJson(Map<String, dynamic> json) {
   if (countPage != null) {
     newsfeedForyouEntity.countPage = countPage;
   }
-  final List<NewsfeedForyouList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<NewsfeedForyouList>(e) as NewsfeedForyouList).toList();
+  final List<NewsfeedForyouList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<NewsfeedForyouList>(e) as NewsfeedForyouList)
+      .toList();
   if (list != null) {
     newsfeedForyouEntity.list = list;
   }
@@ -85,7 +88,8 @@ NewsfeedForyouList $NewsfeedForyouListFromJson(Map<String, dynamic> json) {
   if (createdAt != null) {
     newsfeedForyouList.createdAt = createdAt;
   }
-  final NewsfeedForyouListAccount? account = jsonConvert.convert<NewsfeedForyouListAccount>(json['account']);
+  final NewsfeedForyouListAccount? account = jsonConvert.convert<
+      NewsfeedForyouListAccount>(json['account']);
   if (account != null) {
     newsfeedForyouList.account = account;
   }
@@ -128,7 +132,8 @@ extension NewsfeedForyouListExtension on NewsfeedForyouList {
   }
 }
 
-NewsfeedForyouListAccount $NewsfeedForyouListAccountFromJson(Map<String, dynamic> json) {
+NewsfeedForyouListAccount $NewsfeedForyouListAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedForyouListAccount newsfeedForyouListAccount = NewsfeedForyouListAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -149,7 +154,8 @@ NewsfeedForyouListAccount $NewsfeedForyouListAccountFromJson(Map<String, dynamic
   return newsfeedForyouListAccount;
 }
 
-Map<String, dynamic> $NewsfeedForyouListAccountToJson(NewsfeedForyouListAccount entity) {
+Map<String, dynamic> $NewsfeedForyouListAccountToJson(
+    NewsfeedForyouListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 10 - 5
packages/cs_domain/lib/generated/json/newsfeed_news_entity.g.dart

@@ -19,8 +19,10 @@ NewsfeedNewsEntity $NewsfeedNewsEntityFromJson(Map<String, dynamic> json) {
   if (countPage != null) {
     newsfeedNewsEntity.countPage = countPage;
   }
-  final List<NewsfeedNewsList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<NewsfeedNewsList>(e) as NewsfeedNewsList).toList();
+  final List<NewsfeedNewsList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<NewsfeedNewsList>(e) as NewsfeedNewsList)
+      .toList();
   if (list != null) {
     newsfeedNewsEntity.list = list;
   }
@@ -85,7 +87,8 @@ NewsfeedNewsList $NewsfeedNewsListFromJson(Map<String, dynamic> json) {
   if (createdAt != null) {
     newsfeedNewsList.createdAt = createdAt;
   }
-  final NewsfeedNewsListAccount? account = jsonConvert.convert<NewsfeedNewsListAccount>(json['account']);
+  final NewsfeedNewsListAccount? account = jsonConvert.convert<
+      NewsfeedNewsListAccount>(json['account']);
   if (account != null) {
     newsfeedNewsList.account = account;
   }
@@ -128,7 +131,8 @@ extension NewsfeedNewsListExtension on NewsfeedNewsList {
   }
 }
 
-NewsfeedNewsListAccount $NewsfeedNewsListAccountFromJson(Map<String, dynamic> json) {
+NewsfeedNewsListAccount $NewsfeedNewsListAccountFromJson(
+    Map<String, dynamic> json) {
   final NewsfeedNewsListAccount newsfeedNewsListAccount = NewsfeedNewsListAccount();
   final int? id = jsonConvert.convert<int>(json['id']);
   if (id != null) {
@@ -149,7 +153,8 @@ NewsfeedNewsListAccount $NewsfeedNewsListAccountFromJson(Map<String, dynamic> js
   return newsfeedNewsListAccount;
 }
 
-Map<String, dynamic> $NewsfeedNewsListAccountToJson(NewsfeedNewsListAccount entity) {
+Map<String, dynamic> $NewsfeedNewsListAccountToJson(
+    NewsfeedNewsListAccount entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;

+ 4 - 2
packages/cs_domain/lib/generated/json/notice_board_announ_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/notice_board_announ_entity.dart';
 
-NoticeBoardAnnounEntity $NoticeBoardAnnounEntityFromJson(Map<String, dynamic> json) {
+NoticeBoardAnnounEntity $NoticeBoardAnnounEntityFromJson(
+    Map<String, dynamic> json) {
   final NoticeBoardAnnounEntity noticeBoardAnnounEntity = NoticeBoardAnnounEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -27,7 +28,8 @@ NoticeBoardAnnounEntity $NoticeBoardAnnounEntityFromJson(Map<String, dynamic> js
   return noticeBoardAnnounEntity;
 }
 
-Map<String, dynamic> $NoticeBoardAnnounEntityToJson(NoticeBoardAnnounEntity entity) {
+Map<String, dynamic> $NoticeBoardAnnounEntityToJson(
+    NoticeBoardAnnounEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;

+ 4 - 2
packages/cs_domain/lib/generated/json/notice_board_documents_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/notice_board_documents_entity.dart';
 
-NoticeBoardDocumentsEntity $NoticeBoardDocumentsEntityFromJson(Map<String, dynamic> json) {
+NoticeBoardDocumentsEntity $NoticeBoardDocumentsEntityFromJson(
+    Map<String, dynamic> json) {
   final NoticeBoardDocumentsEntity noticeBoardDocumentsEntity = NoticeBoardDocumentsEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -27,7 +28,8 @@ NoticeBoardDocumentsEntity $NoticeBoardDocumentsEntityFromJson(Map<String, dynam
   return noticeBoardDocumentsEntity;
 }
 
-Map<String, dynamic> $NoticeBoardDocumentsEntityToJson(NoticeBoardDocumentsEntity entity) {
+Map<String, dynamic> $NoticeBoardDocumentsEntityToJson(
+    NoticeBoardDocumentsEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;

+ 4 - 2
packages/cs_domain/lib/generated/json/notice_board_event_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/notice_board_event_entity.dart';
 
-NoticeBoardEventEntity $NoticeBoardEventEntityFromJson(Map<String, dynamic> json) {
+NoticeBoardEventEntity $NoticeBoardEventEntityFromJson(
+    Map<String, dynamic> json) {
   final NoticeBoardEventEntity noticeBoardEventEntity = NoticeBoardEventEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -27,7 +28,8 @@ NoticeBoardEventEntity $NoticeBoardEventEntityFromJson(Map<String, dynamic> json
   return noticeBoardEventEntity;
 }
 
-Map<String, dynamic> $NoticeBoardEventEntityToJson(NoticeBoardEventEntity entity) {
+Map<String, dynamic> $NoticeBoardEventEntityToJson(
+    NoticeBoardEventEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;

+ 4 - 2
packages/cs_domain/lib/generated/json/property_news_entity.g.dart

@@ -19,8 +19,10 @@ PropertyNewsEntity $PropertyNewsEntityFromJson(Map<String, dynamic> json) {
   if (countPage != null) {
     propertyNewsEntity.countPage = countPage;
   }
-  final List<PropertyNewsList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<PropertyNewsList>(e) as PropertyNewsList).toList();
+  final List<PropertyNewsList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<PropertyNewsList>(e) as PropertyNewsList)
+      .toList();
   if (list != null) {
     propertyNewsEntity.list = list;
   }

+ 9 - 4
packages/cs_domain/lib/generated/json/property_sale_rent_entity.g.dart

@@ -1,7 +1,8 @@
 import 'package:domain/generated/json/base/json_convert_content.dart';
 import 'package:domain/entity/property_sale_rent_entity.dart';
 
-PropertySaleRentEntity $PropertySaleRentEntityFromJson(Map<String, dynamic> json) {
+PropertySaleRentEntity $PropertySaleRentEntityFromJson(
+    Map<String, dynamic> json) {
   final PropertySaleRentEntity propertySaleRentEntity = PropertySaleRentEntity();
   final int? count = jsonConvert.convert<int>(json['count']);
   if (count != null) {
@@ -19,15 +20,19 @@ PropertySaleRentEntity $PropertySaleRentEntityFromJson(Map<String, dynamic> json
   if (countPage != null) {
     propertySaleRentEntity.countPage = countPage;
   }
-  final List<PropertySaleRentList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<PropertySaleRentList>(e) as PropertySaleRentList).toList();
+  final List<PropertySaleRentList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<PropertySaleRentList>(e) as PropertySaleRentList)
+      .toList();
   if (list != null) {
     propertySaleRentEntity.list = list;
   }
   return propertySaleRentEntity;
 }
 
-Map<String, dynamic> $PropertySaleRentEntityToJson(PropertySaleRentEntity entity) {
+Map<String, dynamic> $PropertySaleRentEntityToJson(
+    PropertySaleRentEntity entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['count'] = entity.count;
   data['page'] = entity.page;

+ 33 - 15
packages/cs_domain/lib/generated/json/user_me_entity.g.dart

@@ -23,11 +23,13 @@ UserMeEntity $UserMeEntityFromJson(Map<String, dynamic> json) {
   if (email != null) {
     userMeEntity.email = email;
   }
-  final String? followsCount = jsonConvert.convert<String>(json['follows_count']);
+  final String? followsCount = jsonConvert.convert<String>(
+      json['follows_count']);
   if (followsCount != null) {
     userMeEntity.followsCount = followsCount;
   }
-  final String? flowersCount = jsonConvert.convert<String>(json['flowers_count']);
+  final String? flowersCount = jsonConvert.convert<String>(
+      json['flowers_count']);
   if (flowersCount != null) {
     userMeEntity.flowersCount = flowersCount;
   }
@@ -35,21 +37,28 @@ UserMeEntity $UserMeEntityFromJson(Map<String, dynamic> json) {
   if (postsCount != null) {
     userMeEntity.postsCount = postsCount;
   }
-  final List<UserMeHouseholds>? households = (json['households'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<UserMeHouseholds>(e) as UserMeHouseholds).toList();
+  final List<UserMeHouseholds>? households = (json['households'] as List<
+      dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<UserMeHouseholds>(e) as UserMeHouseholds)
+      .toList();
   if (households != null) {
     userMeEntity.households = households;
   }
-  final List<UserMeEstates>? estates = (json['estates'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<UserMeEstates>(e) as UserMeEstates).toList();
+  final List<UserMeEstates>? estates = (json['estates'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<UserMeEstates>(e) as UserMeEstates)
+      .toList();
   if (estates != null) {
     userMeEntity.estates = estates;
   }
-  final UserMeDefaultUnit? defaultUnit = jsonConvert.convert<UserMeDefaultUnit>(json['default_unit']);
+  final UserMeDefaultUnit? defaultUnit = jsonConvert.convert<UserMeDefaultUnit>(
+      json['default_unit']);
   if (defaultUnit != null) {
     userMeEntity.defaultUnit = defaultUnit;
   }
-  final UserMeInformation? information = jsonConvert.convert<UserMeInformation>(json['information']);
+  final UserMeInformation? information = jsonConvert.convert<UserMeInformation>(
+      json['information']);
   if (information != null) {
     userMeEntity.information = information;
   }
@@ -152,8 +161,12 @@ UserMeEstates $UserMeEstatesFromJson(Map<String, dynamic> json) {
   if (name != null) {
     userMeEstates.name = name;
   }
-  final List<UserMeEstatesAccounts>? accounts = (json['accounts'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<UserMeEstatesAccounts>(e) as UserMeEstatesAccounts).toList();
+  final List<UserMeEstatesAccounts>? accounts = (json['accounts'] as List<
+      dynamic>?)
+      ?.map(
+          (e) =>
+      jsonConvert.convert<UserMeEstatesAccounts>(e) as UserMeEstatesAccounts)
+      .toList();
   if (accounts != null) {
     userMeEstates.accounts = accounts;
   }
@@ -181,7 +194,8 @@ extension UserMeEstatesExtension on UserMeEstates {
   }
 }
 
-UserMeEstatesAccounts $UserMeEstatesAccountsFromJson(Map<String, dynamic> json) {
+UserMeEstatesAccounts $UserMeEstatesAccountsFromJson(
+    Map<String, dynamic> json) {
   final UserMeEstatesAccounts userMeEstatesAccounts = UserMeEstatesAccounts();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -207,14 +221,16 @@ UserMeEstatesAccounts $UserMeEstatesAccountsFromJson(Map<String, dynamic> json)
   if (status != null) {
     userMeEstatesAccounts.status = status;
   }
-  final UserMeEstatesAccountsUnit? unit = jsonConvert.convert<UserMeEstatesAccountsUnit>(json['unit']);
+  final UserMeEstatesAccountsUnit? unit = jsonConvert.convert<
+      UserMeEstatesAccountsUnit>(json['unit']);
   if (unit != null) {
     userMeEstatesAccounts.unit = unit;
   }
   return userMeEstatesAccounts;
 }
 
-Map<String, dynamic> $UserMeEstatesAccountsToJson(UserMeEstatesAccounts entity) {
+Map<String, dynamic> $UserMeEstatesAccountsToJson(
+    UserMeEstatesAccounts entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['name'] = entity.name;
@@ -247,7 +263,8 @@ extension UserMeEstatesAccountsExtension on UserMeEstatesAccounts {
   }
 }
 
-UserMeEstatesAccountsUnit $UserMeEstatesAccountsUnitFromJson(Map<String, dynamic> json) {
+UserMeEstatesAccountsUnit $UserMeEstatesAccountsUnitFromJson(
+    Map<String, dynamic> json) {
   final UserMeEstatesAccountsUnit userMeEstatesAccountsUnit = UserMeEstatesAccountsUnit();
   final String? id = jsonConvert.convert<String>(json['id']);
   if (id != null) {
@@ -272,7 +289,8 @@ UserMeEstatesAccountsUnit $UserMeEstatesAccountsUnitFromJson(Map<String, dynamic
   return userMeEstatesAccountsUnit;
 }
 
-Map<String, dynamic> $UserMeEstatesAccountsUnitToJson(UserMeEstatesAccountsUnit entity) {
+Map<String, dynamic> $UserMeEstatesAccountsUnitToJson(
+    UserMeEstatesAccountsUnit entity) {
   final Map<String, dynamic> data = <String, dynamic>{};
   data['id'] = entity.id;
   data['block'] = entity.block;

+ 6 - 3
packages/cs_domain/lib/generated/json/visitor_page_entity.g.dart

@@ -19,8 +19,10 @@ VisitorPageEntity $VisitorPageEntityFromJson(Map<String, dynamic> json) {
   if (countPage != null) {
     visitorPageEntity.countPage = countPage;
   }
-  final List<VisitorPageList>? list = (json['list'] as List<dynamic>?)?.map(
-          (e) => jsonConvert.convert<VisitorPageList>(e) as VisitorPageList).toList();
+  final List<VisitorPageList>? list = (json['list'] as List<dynamic>?)
+      ?.map(
+          (e) => jsonConvert.convert<VisitorPageList>(e) as VisitorPageList)
+      .toList();
   if (list != null) {
     visitorPageEntity.list = list;
   }
@@ -72,7 +74,8 @@ VisitorPageList $VisitorPageListFromJson(Map<String, dynamic> json) {
   if (nric != null) {
     visitorPageList.nric = nric;
   }
-  final String? vehicleNumber = jsonConvert.convert<String>(json['vehicle_number']);
+  final String? vehicleNumber = jsonConvert.convert<String>(
+      json['vehicle_number']);
   if (vehicleNumber != null) {
     visitorPageList.vehicleNumber = vehicleNumber;
   }

BIN
packages/cs_resources/assets/community/garage_sale.webp


BIN
packages/cs_resources/assets/community/nes_feed.webp


BIN
packages/cs_resources/assets/community/news.webp


BIN
packages/cs_resources/assets/property/ioan.webp


BIN
packages/cs_resources/assets/property/news.webp


BIN
packages/cs_resources/assets/property/rent.webp


BIN
packages/cs_resources/assets/property/sale.webp


+ 1 - 1
packages/cs_resources/lib/generated/assets.dart

@@ -53,7 +53,7 @@ class Assets {
   static const String communityGarageSale = 'assets/community/garage_sale.webp';
   static const String communityLike = 'assets/community/like.webp';
   static const String communityLikeActive = 'assets/community/like_active.webp';
-  static const String communityNesFeed = 'assets/community/nes_feed.webp';
+  static const String communityNews = 'assets/community/news.webp';
   static const String communityNewsfeedDetailComment = 'assets/community/newsfeed_detail_comment.png';
   static const String communityNewsfeedDetailLike = 'assets/community/newsfeed_detail_like.png';
   static const String communityPhone = 'assets/community/phone.png';

+ 3 - 0
packages/cs_widgets/lib/load_state_layout.dart

@@ -13,6 +13,7 @@ class LoadStateLayout extends StatefulWidget {
   final LoadState state; //页面状态
   final Widget? successWidget; //成功视图
   final List<Widget>? successSliverWidget; //成功的滚动视图(Sliver的布局)
+  ScrollController? sliverScrollController;
   final VoidCallback? errorRetry; //错误事件处理
   final Color? themeColor;
   String? errorMessage;
@@ -22,6 +23,7 @@ class LoadStateLayout extends StatefulWidget {
     this.state = LoadState.State_Loading, //默认为加载状态
     this.successWidget, //成功的布局 (二选一)
     this.successSliverWidget, //成功的滚动布局(二选一)
+    this.sliverScrollController,
     this.errorMessage, //错误的信息展示
     this.errorRetry, //错误重试的事件
     this.themeColor, //主题颜色,Loading,文本颜色
@@ -37,6 +39,7 @@ class _LoadStateLayoutState extends State<LoadStateLayout> {
     if (widget.successSliverWidget != null) {
       //如果有 successSliverWidget 就使用 Slivers 的方式布局
       return CustomScrollView(
+        controller: widget.sliverScrollController,
         slivers: _buildSlivers(),
       );
     } else {