diff --git a/lib/pages/main/controller.dart b/lib/pages/main/controller.dart index ad2a7781..fd18d728 100644 --- a/lib/pages/main/controller.dart +++ b/lib/pages/main/controller.dart @@ -13,6 +13,7 @@ import '../../models/common/nav_bar_config.dart'; class MainController extends GetxController { List pages = []; + List pagesIds = []; RxList navigationBars = [].obs; late List defaultNavTabs; late List navBarSort; @@ -43,7 +44,8 @@ class MainController extends GetxController { SettingBoxKey.dynamicBadgeMode, defaultValue: DynamicBadgeMode.number.code)]; setNavBarConfig(); - if (dynamicBadgeType.value != DynamicBadgeMode.hidden) { + if (dynamicBadgeType.value != DynamicBadgeMode.hidden && + pagesIds.contains(2)) { getUnreadDynamic(); } enableGradientBg = @@ -104,6 +106,7 @@ class MainController extends GetxController { // 如果找不到匹配项,默认索引设置为0或其他合适的值 selectedIndex = defaultIndex != -1 ? defaultIndex : 0; pages = navigationBars.map((e) => e['page']).toList(); + pagesIds = navigationBars.map((e) => e['id']).toList(); } @override diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index 3da667e8..4399bf30 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -22,10 +22,10 @@ class MainApp extends StatefulWidget { class _MainAppState extends State with SingleTickerProviderStateMixin { final MainController _mainController = Get.put(MainController()); - final HomeController _homeController = Get.put(HomeController()); - final RankController _rankController = Get.put(RankController()); - final DynamicsController _dynamicController = Get.put(DynamicsController()); - final MediaController _mediaController = Get.put(MediaController()); + late HomeController _homeController; + RankController? _rankController; + DynamicsController? _dynamicController; + MediaController? _mediaController; int? _lastSelectTime; //上次点击时间 Box setting = GStrorage.setting; @@ -38,6 +38,7 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { _mainController.pageController = PageController(initialPage: _mainController.selectedIndex); enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true); + controllerInit(); } void setIndex(int value) async { @@ -60,38 +61,51 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { } if (currentPage is RankPage) { - if (_rankController.flag) { + if (_rankController!.flag) { // 单击返回顶部 双击并刷新 if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) { - _rankController.onRefresh(); + _rankController!.onRefresh(); } else { - _rankController.animateToTop(); + _rankController!.animateToTop(); } _lastSelectTime = DateTime.now().millisecondsSinceEpoch; } - _rankController.flag = true; + _rankController!.flag = true; } else { - _rankController.flag = false; + _rankController?.flag = false; } if (currentPage is DynamicsPage) { - if (_dynamicController.flag) { + if (_dynamicController!.flag) { // 单击返回顶部 双击并刷新 if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) { - _dynamicController.onRefresh(); + _dynamicController!.onRefresh(); } else { - _dynamicController.animateToTop(); + _dynamicController!.animateToTop(); } _lastSelectTime = DateTime.now().millisecondsSinceEpoch; } - _dynamicController.flag = true; + _dynamicController!.flag = true; _mainController.clearUnread(); } else { - _dynamicController.flag = false; + _dynamicController?.flag = false; } if (currentPage is MediaPage) { - _mediaController.queryFavFolder(); + _mediaController!.queryFavFolder(); + } + } + + void controllerInit() { + _homeController = Get.put(HomeController()); + if (_mainController.pagesIds.contains(1)) { + _rankController = Get.put(RankController()); + } + if (_mainController.pagesIds.contains(2)) { + _dynamicController = Get.put(DynamicsController()); + } + if (_mainController.pagesIds.contains(3)) { + _mediaController = Get.put(MediaController()); } }