|
@@ -0,0 +1,219 @@
|
|
|
+import 'package:cs_resources/generated/assets.dart';
|
|
|
+import 'package:flutter/cupertino.dart';
|
|
|
+import 'package:plugin_platform/engine/toast/toast_engine.dart';
|
|
|
+import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
+import 'package:router/ext/auto_router_extensions.dart';
|
|
|
+import 'package:shared/utils/log_utils.dart';
|
|
|
+import 'package:widgets/load_state_layout.dart';
|
|
|
+import 'package:widgets/widget_export.dart';
|
|
|
+import 'package:auto_route/auto_route.dart';
|
|
|
+
|
|
|
+import '../../../router/page/community_page_router.dart';
|
|
|
+
|
|
|
+import '../../community/newsfeed_detail/newsfeed_detail_page.dart';
|
|
|
+import 'my_posts_newsfeed_state.dart';
|
|
|
+import '../my_posts_repository.dart';
|
|
|
+import 'newsfeed_itemgroup_state.dart';
|
|
|
+part 'my_posts_newsfeed_vm.g.dart';
|
|
|
+
|
|
|
+@riverpod
|
|
|
+class MyPostsNewsfeedVm extends _$MyPostsNewsfeedVm {
|
|
|
+ // late MyPostsRepository MyPostsRepositoryInstance;
|
|
|
+
|
|
|
+ bool _needShowPlaceholder = true; //是否展示LoadingView
|
|
|
+ // Refresh 控制器
|
|
|
+ final EasyRefreshController refreshController = EasyRefreshController(
|
|
|
+ controlFinishRefresh: true, //允许刷新
|
|
|
+ controlFinishLoad: true, //允许加载
|
|
|
+ );
|
|
|
+
|
|
|
+ MyPostsNewsfeedState initState() {
|
|
|
+ return MyPostsNewsfeedState(
|
|
|
+ list: []
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+ @override
|
|
|
+ MyPostsNewsfeedState build(){
|
|
|
+ // 引入数据仓库
|
|
|
+ // MyPostsNewsfeedRepositoryInstance = ref.read(newsRepositoryProvider);
|
|
|
+ final state = initState();
|
|
|
+ Log.d("--------------------------build---------------------");
|
|
|
+
|
|
|
+ return state;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 设置当前的 tabsRouter 和 pageController
|
|
|
+ handlerChangeTab(BuildContext context, int activeTabIdx) {
|
|
|
+ final tabsRouter = AutoTabsRouter.of(context);
|
|
|
+ tabsRouter.setActiveIndex(activeTabIdx);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //刷新页面状态
|
|
|
+ void changeLoadingState(LoadState loadState, String? errorMsg) {
|
|
|
+ state = state.copyWith(
|
|
|
+ loadingState: loadState,
|
|
|
+ errorMessage: errorMsg
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 初始化页面数据
|
|
|
+ initPageData() {
|
|
|
+ Log.d("----for_sale_vm-----initPageData ${state.loadingState}");
|
|
|
+ onRefresh();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 上拉加载 更多
|
|
|
+ Future loadMore() async {
|
|
|
+ Log.d("----for_sale_vm-----loadMore");
|
|
|
+ // await Future.delayed(const Duration(seconds: 2));
|
|
|
+ // if(state.list.length >= state.filterCount){
|
|
|
+ // return;
|
|
|
+ // }else {
|
|
|
+ // int curPage = state.curPage + 1;
|
|
|
+ // state = state.copyWith(curPage: curPage,);
|
|
|
+ // getListData();
|
|
|
+ // }
|
|
|
+ // 检查 curPage 是否为 null,并初始化为 1
|
|
|
+ int newCurPage = state.curPage ?? 1;
|
|
|
+ state = state.copyWith(curPage: ++newCurPage);
|
|
|
+ getListData();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ // 下拉刷新
|
|
|
+ Future onRefresh() async {
|
|
|
+ Log.d("----forsale_vm-----onRefresh ");
|
|
|
+
|
|
|
+ // await Future.delayed(const Duration(seconds: 2));
|
|
|
+ state = state.copyWith(curPage: 1);
|
|
|
+ getListData();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 重试请求
|
|
|
+ Future retryRequest() async {
|
|
|
+ state = state.copyWith(curPage: 1);
|
|
|
+ _needShowPlaceholder = true;
|
|
|
+ getListData();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取list 列表数据
|
|
|
+ Future getListData<T>() async {
|
|
|
+ Log.d("加载listData数据---------------start-----");
|
|
|
+
|
|
|
+ if (_needShowPlaceholder) {
|
|
|
+ changeLoadingState(LoadState.State_Loading, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ Log.d("for_sale加载listData数据---------------start--${state.curPage}---");
|
|
|
+ // try {
|
|
|
+ // //请求网络
|
|
|
+ // Map<String, dynamic> params = {
|
|
|
+ // "curPage": state.curPage,
|
|
|
+ // "pageSize": state.pageSize,
|
|
|
+ // };
|
|
|
+ // 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<NewsFeedItemGroupState> listData = [];
|
|
|
+
|
|
|
+ listData.add(
|
|
|
+ NewsFeedItemGroupState(
|
|
|
+ groupId: "June 17,2024",
|
|
|
+ itemgroupDatas: [
|
|
|
+ {
|
|
|
+ '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 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
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ ));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (state.curPage == 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;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 点击 like comments share
|
|
|
+ void handlerClickActionBtn(String? actionStr, item){
|
|
|
+ final id = item['id'];
|
|
|
+ switch (actionStr) {
|
|
|
+ case 'like':
|
|
|
+ Log.d("点击了 点赞");
|
|
|
+ handlerGotoDetail(id);
|
|
|
+ break;
|
|
|
+ case 'comments':
|
|
|
+ Log.d("点击了 评论");
|
|
|
+ handlerGotoDetail(id);
|
|
|
+ break;
|
|
|
+ case 'share':
|
|
|
+ Log.d("点击了 分享");
|
|
|
+ handlerGotoDetail(id);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ Log.d("点击了卡片");
|
|
|
+ handlerGotoDetail(id);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 去详情页面
|
|
|
+ void handlerGotoDetail(id){
|
|
|
+ Log.d("去详情页面");
|
|
|
+ appRouter.push(NewsfeedDetailPageRoute(id: id, type:'news'));
|
|
|
+ }
|
|
|
+}
|