diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index 04bda6a4..3100919a 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -12,6 +12,7 @@ import 'package:PiliPalaX/pages/media/index.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/utils.dart'; import '../../models/common/dynamic_badge_mode.dart'; +import '../../models/common/nav_bar_config.dart'; class MainController extends GetxController { List pages = [ @@ -19,44 +20,7 @@ class MainController extends GetxController { const DynamicsPage(), const MediaPage(), ]; - RxList navigationBars = [ - { - 'icon': const Icon( - Icons.home_outlined, - size: 21, - ), - 'selectIcon': const Icon( - Icons.home, - size: 21, - ), - 'label': "首页", - 'count': 0, - }, - { - 'icon': const Icon( - Icons.motion_photos_on_outlined, - size: 21, - ), - 'selectIcon': const Icon( - Icons.motion_photos_on, - size: 21, - ), - 'label': "动态", - 'count': 0, - }, - { - 'icon': const Icon( - Icons.video_collection_outlined, - size: 20, - ), - 'selectIcon': const Icon( - Icons.video_collection, - size: 21, - ), - 'label': "媒体库", - 'count': 0, - } - ].obs; + RxList navigationBars = defaultNavigationBars.obs; final StreamController bottomBarStream = StreamController.broadcast(); Box setting = GStrorage.setting; @@ -75,6 +39,10 @@ class MainController extends GetxController { Utils.checkUpdate(); } hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: true); + int defaultHomePage = + setting.get(SettingBoxKey.defaultHomePage, defaultValue: 0) as int; + selectedIndex = defaultNavigationBars + .indexWhere((item) => item['id'] == defaultHomePage); var userInfo = userInfoCache.get('userInfoCache'); userLogin.value = userInfo != null; dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( diff --git a/lib/pages/setting/controller.dart b/lib/pages/setting/controller.dart index a4664c88..74958e1c 100644 --- a/lib/pages/setting/controller.dart +++ b/lib/pages/setting/controller.dart @@ -8,6 +8,7 @@ import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/login.dart'; import 'package:PiliPalaX/utils/storage.dart'; import '../../models/common/dynamic_badge_mode.dart'; +import '../../models/common/nav_bar_config.dart'; import '../main/index.dart'; import 'widgets/select_dialog.dart'; @@ -24,6 +25,7 @@ class SettingController extends GetxController { Rx themeType = ThemeType.system.obs; var userInfo; Rx dynamicBadgeType = DynamicBadgeMode.number.obs; + RxInt defaultHomePage = 0.obs; @override void onInit() { @@ -42,6 +44,8 @@ class SettingController extends GetxController { dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( SettingBoxKey.dynamicBadgeMode, defaultValue: DynamicBadgeMode.number.code)]; + defaultHomePage.value = + setting.get(SettingBoxKey.defaultHomePage, defaultValue: 0); } loginOut() async { @@ -112,4 +116,24 @@ class SettingController extends GetxController { SmartDialog.showToast('设置成功'); } } + + // 设置默认启动页 + seteDefaultHomePage(BuildContext context) async { + int? result = await showDialog( + context: context, + builder: (context) { + return SelectDialog( + title: '首页启动页', + value: defaultHomePage.value, + values: defaultNavigationBars.map((e) { + return {'title': e['label'], 'value': e['id']}; + }).toList()); + }, + ); + if (result != null) { + defaultHomePage.value = result; + setting.put(SettingBoxKey.defaultHomePage, result); + SmartDialog.showToast('设置成功,重启生效'); + } + } } diff --git a/lib/pages/setting/pages/home_tabbar_set.dart b/lib/pages/setting/pages/home_tabbar_set.dart index 4be662ac..bfd28935 100644 --- a/lib/pages/setting/pages/home_tabbar_set.dart +++ b/lib/pages/setting/pages/home_tabbar_set.dart @@ -40,10 +40,6 @@ class _TabbarSetPageState extends State { .where((i) => tabbarSort.contains((i['type'] as TabType).id)) .map((i) => (i['type'] as TabType).id) .toList(); - if (sortedTabbar.isEmpty) { - SmartDialog.showToast('请至少设置一项!'); - return; - } settingStorage.put(SettingBoxKey.tabbarSort, sortedTabbar); SmartDialog.showToast('保存成功,下次启动时生效'); } diff --git a/lib/pages/setting/style_setting.dart b/lib/pages/setting/style_setting.dart index a7b42b95..d37f5507 100644 --- a/lib/pages/setting/style_setting.dart +++ b/lib/pages/setting/style_setting.dart @@ -14,6 +14,7 @@ import 'package:PiliPalaX/utils/storage.dart'; import '../../models/common/dynamic_badge_mode.dart'; import '../../plugin/pl_player/utils/fullscreen.dart'; +import '../../models/common/nav_bar_config.dart'; import 'controller.dart'; import 'widgets/switch_item.dart'; @@ -31,7 +32,6 @@ class _StyleSettingState extends State { Box setting = GStrorage.setting; late int picQuality; - late double toastOpacity; late ThemeType _tempThemeValue; late double maxRowWidth; @@ -39,7 +39,6 @@ class _StyleSettingState extends State { void initState() { super.initState(); picQuality = setting.get(SettingBoxKey.defaultPicQa, defaultValue: 10); - toastOpacity = setting.get(SettingBoxKey.defaultToastOp, defaultValue: 1.0); _tempThemeValue = settingController.themeType.value; maxRowWidth = setting.get(SettingBoxKey.maxRowWidth, defaultValue: 240.0) as double; } @@ -264,6 +263,14 @@ class _StyleSettingState extends State { '当前主题:${colorSelectController.type.value == 0 ? '动态取色' : '指定颜色'}', style: subTitleStyle)), ), + ListTile( + dense: false, + onTap: () => settingController.seteDefaultHomePage(context), + title: Text('默认启动页', style: titleStyle), + subtitle: Obx(() => Text( + '当前启动页:${defaultNavigationBars.firstWhere((e) => e['id'] == settingController.defaultHomePage.value)['label']}', + style: subTitleStyle)), + ), ListTile( dense: false, onTap: () => Get.toNamed('/fontSizeSetting'), diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index 3be46e2f..e1d64fd2 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -126,7 +126,8 @@ class SettingBoxKey { enableWordRe = 'enableWordRe', enableSearchWord = 'enableSearchWord', enableSystemProxy = 'enableSystemProxy', - enableAi = 'enableAi'; + enableAi = 'enableAi', + defaultHomePage = 'defaultHomePage'; /// 外观 static const String themeMode = 'themeMode',