icon优化
This commit is contained in:
@@ -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);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user