import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:pilipala/http/html.dart'; import 'package:pilipala/http/reply.dart'; import 'package:pilipala/models/common/reply_sort_type.dart'; import 'package:pilipala/models/video/reply/item.dart'; import 'package:pilipala/utils/feed_back.dart'; import 'package:pilipala/utils/storage.dart'; class DynamicDetailController extends GetxController { DynamicDetailController(this.oid, this.type); int? oid; int? type; dynamic item; int? floor; int currentPage = 0; bool isLoadingMore = false; RxString noMore = ''.obs; RxList replyList = [].obs; RxInt acount = 0.obs; final ScrollController scrollController = ScrollController(); ReplySortType _sortType = ReplySortType.time; RxString sortTypeTitle = ReplySortType.time.titles.obs; RxString sortTypeLabel = ReplySortType.time.labels.obs; Box setting = GStrorage.setting; @override void onInit() { super.onInit(); item = Get.arguments['item']; floor = Get.arguments['floor']; if (floor == 1) { acount.value = int.parse(item!.modules!.moduleStat!.comment!.count ?? '0'); } int deaultReplySortIndex = setting.get(SettingBoxKey.replySortType, defaultValue: 0); if (deaultReplySortIndex == 2) { setting.put(SettingBoxKey.replySortType, 0); deaultReplySortIndex = 0; } _sortType = ReplySortType.values[deaultReplySortIndex]; sortTypeTitle.value = _sortType.titles; sortTypeLabel.value = _sortType.labels; } Future queryReplyList({reqType = 'init'}) async { if (reqType == 'init') { currentPage = 0; } var res = await ReplyHttp.replyList( oid: oid!, pageNum: currentPage + 1, type: type!, sort: _sortType.index, ); if (res['status']) { List replies = res['data'].replies; acount.value = res['data'].page.acount; if (replies.isNotEmpty) { currentPage++; noMore.value = '加载中...'; if (replies.length < 20) { noMore.value = '没有更多了'; } } else { noMore.value = currentPage == 0 ? '还没有评论' : '没有更多了'; } if (reqType == 'init') { // 添加置顶回复 if (res['data'].upper.top != null) { bool flag = res['data'] .topReplies .any((reply) => reply.rpid == res['data'].upper.top.rpid); if (!flag) { replies.insert(0, res['data'].upper.top); } } replies.insertAll(0, res['data'].topReplies); replyList.value = replies; } else { replyList.addAll(replies); } } isLoadingMore = false; return res; } // 排序搜索评论 queryBySort() { feedBack(); switch (_sortType) { case ReplySortType.time: _sortType = ReplySortType.like; break; case ReplySortType.like: _sortType = ReplySortType.time; break; default: } sortTypeTitle.value = _sortType.titles; sortTypeLabel.value = _sortType.labels; replyList.clear(); queryReplyList(reqType: 'init'); } // 根据jumpUrl获取动态html reqHtmlByOpusId(int id) async { var res = await HtmlHttp.reqHtml(id, 'opus'); oid = res['commentId']; } }