From 8169f5739cdc68765c8fc8b00b95d1bf9694afa8 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Sun, 28 Jan 2024 23:44:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A6=96=E9=A1=B5tabbar=E6=8E=92?= =?UTF-8?q?=E5=BA=8F=E6=97=A0=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/pages/home/controller.dart | 11 +++++++---- lib/pages/setting/pages/home_tabbar_set.dart | 11 +++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/lib/pages/home/controller.dart b/lib/pages/home/controller.dart index e6fafba6..685ff5c3 100644 --- a/lib/pages/home/controller.dart +++ b/lib/pages/home/controller.dart @@ -63,13 +63,16 @@ class HomeController extends GetxController with GetTickerProviderStateMixin { } void setTabConfig() async { - defaultTabs = tabsConfig; + defaultTabs = [...tabsConfig]; tabbarSort = settingStorage.get(SettingBoxKey.tabbarSort, defaultValue: ['live', 'rcmd', 'hot', 'bangumi']); + defaultTabs.retainWhere( + (item) => tabbarSort.contains((item['type'] as TabType).id)); + defaultTabs.sort((a, b) => tabbarSort + .indexOf((a['type'] as TabType).id) + .compareTo(tabbarSort.indexOf((b['type'] as TabType).id))); - tabs.value = defaultTabs - .where((i) => tabbarSort.contains((i['type'] as TabType).id)) - .toList(); + tabs.value = defaultTabs; if (tabbarSort.contains(TabType.rcmd.id)) { initialIndex.value = tabbarSort.indexOf(TabType.rcmd.id); diff --git a/lib/pages/setting/pages/home_tabbar_set.dart b/lib/pages/setting/pages/home_tabbar_set.dart index 445ca4f5..4cb3944c 100644 --- a/lib/pages/setting/pages/home_tabbar_set.dart +++ b/lib/pages/setting/pages/home_tabbar_set.dart @@ -22,6 +22,17 @@ class _TabbarSetPageState extends State { defaultTabs = tabsConfig; tabbarSort = settingStorage.get(SettingBoxKey.tabbarSort, defaultValue: ['live', 'rcmd', 'hot', 'bangumi']); + // 对 tabData 进行排序 + defaultTabs.sort((a, b) { + int indexA = tabbarSort.indexOf((a['type'] as TabType).id); + int indexB = tabbarSort.indexOf((b['type'] as TabType).id); + + // 如果类型在 sortOrder 中不存在,则放在末尾 + if (indexA == -1) indexA = tabbarSort.length; + if (indexB == -1) indexB = tabbarSort.length; + + return indexA.compareTo(indexB); + }); } void saveEdit() {