feat: 完成班级模块全量功能迭代

本次提交完成了班级模块的多项核心功能开发与优化:
1. 新增DELETE请求封装,支持业务删除接口且不自动重试
2. 完善UserPostCommonDto模型,新增头像字段适配详情接口
3. 重构路由架构,使用StatefulShellRoute实现Tab页面保活
4. 新增我的互动页面,包含我的动态/点赞/留言三个子页
5. 新增全部同学页面,展示班级全员信息与在线状态
6. 新增动态详情页面,支持查看完整评论与点赞头像
7. 抽离通用PostListBody组件,复用列表分页与交互逻辑
8. 优化班级列表页加载逻辑与图片预览交互
9. 新增评论删除、多图预览等细节交互功能
This commit is contained in:
崔宝新
2026-09-07 09:20:06 +08:00
parent 0c5aee59c0
commit 586c75f841
11 changed files with 1331 additions and 87 deletions
+11 -4
View File
@@ -21,6 +21,7 @@ class UserPostCommonDto {
this.content = '',
this.createTime = '',
this.id = 0,
this.avatar = '',
});
final int userId;
@@ -28,6 +29,7 @@ class UserPostCommonDto {
final String content;
final String createTime;
final int id;
final String avatar;
factory UserPostCommonDto.fromJson(Map<String, dynamic> json) =>
UserPostCommonDto(
@@ -36,6 +38,8 @@ class UserPostCommonDto {
content: json['content'] as String? ?? '',
createTime: json['createTime'] as String? ?? '',
id: _toInt(json['id']),
// 详情接口的留言项带评论者头像
avatar: json['avatar'] as String? ?? '',
);
}
@@ -248,13 +252,16 @@ class UserRankPagedList {
final ranksList = payload['userRanks'] is List
? payload['userRanks'] as List<dynamic>
: (payload['data'] is List
? payload['data'] as List<dynamic>
: const []);
? payload['data'] as List<dynamic>
: const []);
return UserRankPagedList(
myRank: payload['myRank'] is Map<String, dynamic>
? UserRank.fromJson(payload['myRank'] as Map<String, dynamic>)
: null,
userRanks: ranksList.whereType<Map<String, dynamic>>().map(UserRank.fromJson).toList(),
userRanks: ranksList
.whereType<Map<String, dynamic>>()
.map(UserRank.fromJson)
.toList(),
total: _toInt(payload['total']),
pageIndex: _toInt(payload['pageIndex']),
pageSize: _toInt(payload['pageSize']),
@@ -304,4 +311,4 @@ int? _toIntOrNull(dynamic v) {
if (v is num) return v.toInt();
if (v is String) return int.tryParse(v);
return null;
}
}