diff --git a/lib/models/follow/result.dart b/lib/models/follow/result.dart index 54489e93..de9614e8 100644 --- a/lib/models/follow/result.dart +++ b/lib/models/follow/result.dart @@ -10,8 +10,9 @@ class FollowDataModel { FollowDataModel.fromJson(Map json) { total = json['total'] ?? 0; list = (json['list'] as List?) - ?.map((e) => FollowItemModel.fromJson(e)) - .toList(); + ?.map((e) => FollowItemModel.fromJson(e)) + .toList() ?? + []; } } diff --git a/lib/pages/dynamics/controller.dart b/lib/pages/dynamics/controller.dart index ae083d86..7f4ffca3 100644 --- a/lib/pages/dynamics/controller.dart +++ b/lib/pages/dynamics/controller.dart @@ -33,7 +33,6 @@ class DynamicsController extends GetxController dynamic face; RxBool isLoadingDynamic = false.obs; List hasUpdatedUps = []; - List allFollowedUps = []; int allFollowedUpsPage = 1; int allFollowedUpsTotal = 0; @@ -69,8 +68,9 @@ class DynamicsController extends GetxController } Future queryFollowing2() async { - if (allFollowedUps.length >= allFollowedUpsTotal) { - SmartDialog.showToast('没有更多了'); + if (upData.value.upList != null && + upData.value.upList!.length >= allFollowedUpsTotal) { + // SmartDialog.showToast('没有更多了'); return; } var res = await FollowHttp.followings( @@ -80,16 +80,22 @@ class DynamicsController extends GetxController orderType: 'attention', ); if (res['status']) { - allFollowedUps.addAll(res['data'].list.map((FollowItemModel e) => - UpItem( - face: e.face, - mid: e.mid, - uname: e.uname, - hasUpdate: hasUpdatedUps.any((element) => - (element.mid == e.mid) && (element.hasUpdate == true))))); + upData.value.upList ??= []; + upData.value.upList!.addAll( + res['data'] + .list + .where((e) => hasUpdatedUps.every((e1) => e.mid != e1.mid)) + .map( + (FollowItemModel e) => UpItem( + face: e.face, + mid: e.mid, + uname: e.uname, + hasUpdate: false, + ), + ), + ); allFollowedUpsPage += 1; allFollowedUpsTotal = res['data'].total; - upData.value.upList = allFollowedUps; upData.refresh(); } else { SmartDialog.showToast(res['msg']); @@ -129,23 +135,25 @@ class DynamicsController extends GetxController upData.refresh(); hasUpdatedUps = ress[0]['data'].upList!; } + List allFollowedUps = []; if (!ress[1]['status']) { SmartDialog.showToast("获取关注列表失败:${ress[1]['msg']}"); } else { - allFollowedUps = ress[1]['data'] - .list - .map((FollowItemModel e) => UpItem( + allFollowedUps = (ress[1]['data'].list as List) + .where((e) => hasUpdatedUps.every((e1) => e.mid != e1.mid)) + .map( + (e) => UpItem( face: e.face, mid: e.mid, uname: e.uname, - hasUpdate: hasUpdatedUps.any((element) => - (element.mid == e.mid) && (element.hasUpdate == true)))) + hasUpdate: false, + ), + ) .toList(); allFollowedUpsPage += 1; allFollowedUpsTotal = ress[1]['data'].total; } - upData.value.upList = - allFollowedUpsTotal > 0 ? allFollowedUps : hasUpdatedUps; + upData.value.upList = hasUpdatedUps + allFollowedUps; upData.refresh(); } else { var res = await DynamicsHttp.followUp();