icon优化

This commit is contained in:
Developer
2026-04-02 17:31:53 +08:00
parent 954d173329
commit 09fee0694c
34 changed files with 754 additions and 194 deletions

View File

@@ -30,21 +30,37 @@ class UnifiedCard {
}
class AllListPage extends StatefulWidget {
const AllListPage({super.key});
final bool? initialSortByTime;
final bool? initialLikesFirst;
const AllListPage({
super.key,
this.initialSortByTime,
this.initialLikesFirst,
});
@override
State<AllListPage> createState() => _AllListPageState();
State<AllListPage> createState() => AllListPageState();
}
class _AllListPageState extends State<AllListPage> {
class AllListPageState extends State<AllListPage> {
List<UnifiedCard> _cards = [];
bool _isLoading = false;
bool _sortByTime = true; // true: 按时间排序, false: 按分类排序
bool _likesFirst = true; // true: 点赞在前, false: 笔记在前
StreamSubscription<NetworkEvent>? _networkSubscription;
final ThemeController _themeController = Get.find<ThemeController>();
@override
void initState() {
super.initState();
// 应用初始化排序参数
if (widget.initialSortByTime != null) {
_sortByTime = widget.initialSortByTime!;
}
if (widget.initialLikesFirst != null) {
_likesFirst = widget.initialLikesFirst!;
}
_loadAllData();
_listenToNetworkEvents();
}
@@ -115,8 +131,32 @@ class _AllListPageState extends State<AllListPage> {
);
}
// 按时间排序(最新的在前)
allCards.sort((a, b) => b.time.compareTo(a.time));
// 根据状态进行排序
if (_sortByTime) {
// 按时间排序(最新的在前)
allCards.sort((a, b) => b.time.compareTo(a.time));
} else {
// 按分类排序,点赞在前,笔记在后
allCards.sort((a, b) {
// 先按类型排序
final typeCompare = a.type.index.compareTo(b.type.index);
if (typeCompare != 0) return typeCompare;
// 同类型按时间排序
return b.time.compareTo(a.time);
});
// 如果笔记在前,则重新排序
if (!_likesFirst) {
allCards.sort((a, b) {
if (a.type != b.type) {
// 笔记在前,笔记类型排在前面
return a.type == CardType.note ? -1 : 1;
}
return b.time.compareTo(a.time);
});
}
}
if (mounted) {
setState(() {
@@ -730,4 +770,50 @@ class _AllListPageState extends State<AllListPage> {
),
);
}
// 公开的排序方法,供外部调用
void sortByTime(bool sortByTime) {
if (_sortByTime != sortByTime) {
setState(() {
_sortByTime = sortByTime;
_applySorting();
});
}
}
void toggleLikesFirst() {
setState(() {
_likesFirst = !_likesFirst;
_applySorting();
});
}
// 应用排序逻辑
void _applySorting() {
if (_sortByTime) {
// 按时间排序(最新的在前)
_cards.sort((a, b) => b.time.compareTo(a.time));
} else {
// 按分类排序,点赞在前,笔记在后
_cards.sort((a, b) {
// 先按类型排序
final typeCompare = a.type.index.compareTo(b.type.index);
if (typeCompare != 0) return typeCompare;
// 同类型按时间排序
return b.time.compareTo(a.time);
});
// 如果笔记在前,则重新排序
if (!_likesFirst) {
_cards.sort((a, b) {
if (a.type != b.type) {
// 笔记在前,笔记类型排在前面
return a.type == CardType.note ? -1 : 1;
}
return b.time.compareTo(a.time);
});
}
}
}
}