opt: 控制器初始化

This commit is contained in:
guozhigq
2024-10-07 17:55:39 +08:00
parent 722ba06787
commit 64c2bcc650
2 changed files with 33 additions and 16 deletions

View File

@ -13,6 +13,7 @@ import '../../models/common/nav_bar_config.dart';
class MainController extends GetxController { class MainController extends GetxController {
List<Widget> pages = <Widget>[]; List<Widget> pages = <Widget>[];
List<int> pagesIds = <int>[];
RxList navigationBars = [].obs; RxList navigationBars = [].obs;
late List defaultNavTabs; late List defaultNavTabs;
late List<int> navBarSort; late List<int> navBarSort;
@ -43,7 +44,8 @@ class MainController extends GetxController {
SettingBoxKey.dynamicBadgeMode, SettingBoxKey.dynamicBadgeMode,
defaultValue: DynamicBadgeMode.number.code)]; defaultValue: DynamicBadgeMode.number.code)];
setNavBarConfig(); setNavBarConfig();
if (dynamicBadgeType.value != DynamicBadgeMode.hidden) { if (dynamicBadgeType.value != DynamicBadgeMode.hidden &&
pagesIds.contains(2)) {
getUnreadDynamic(); getUnreadDynamic();
} }
enableGradientBg = enableGradientBg =
@ -104,6 +106,7 @@ class MainController extends GetxController {
// 如果找不到匹配项默认索引设置为0或其他合适的值 // 如果找不到匹配项默认索引设置为0或其他合适的值
selectedIndex = defaultIndex != -1 ? defaultIndex : 0; selectedIndex = defaultIndex != -1 ? defaultIndex : 0;
pages = navigationBars.map<Widget>((e) => e['page']).toList(); pages = navigationBars.map<Widget>((e) => e['page']).toList();
pagesIds = navigationBars.map<int>((e) => e['id']).toList();
} }
@override @override

View File

@ -22,10 +22,10 @@ class MainApp extends StatefulWidget {
class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin { class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
final MainController _mainController = Get.put(MainController()); final MainController _mainController = Get.put(MainController());
final HomeController _homeController = Get.put(HomeController()); late HomeController _homeController;
final RankController _rankController = Get.put(RankController()); RankController? _rankController;
final DynamicsController _dynamicController = Get.put(DynamicsController()); DynamicsController? _dynamicController;
final MediaController _mediaController = Get.put(MediaController()); MediaController? _mediaController;
int? _lastSelectTime; //上次点击时间 int? _lastSelectTime; //上次点击时间
Box setting = GStrorage.setting; Box setting = GStrorage.setting;
@ -38,6 +38,7 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
_mainController.pageController = _mainController.pageController =
PageController(initialPage: _mainController.selectedIndex); PageController(initialPage: _mainController.selectedIndex);
enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true); enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true);
controllerInit();
} }
void setIndex(int value) async { void setIndex(int value) async {
@ -60,38 +61,51 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
} }
if (currentPage is RankPage) { if (currentPage is RankPage) {
if (_rankController.flag) { if (_rankController!.flag) {
// 单击返回顶部 双击并刷新 // 单击返回顶部 双击并刷新
if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) { if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) {
_rankController.onRefresh(); _rankController!.onRefresh();
} else { } else {
_rankController.animateToTop(); _rankController!.animateToTop();
} }
_lastSelectTime = DateTime.now().millisecondsSinceEpoch; _lastSelectTime = DateTime.now().millisecondsSinceEpoch;
} }
_rankController.flag = true; _rankController!.flag = true;
} else { } else {
_rankController.flag = false; _rankController?.flag = false;
} }
if (currentPage is DynamicsPage) { if (currentPage is DynamicsPage) {
if (_dynamicController.flag) { if (_dynamicController!.flag) {
// 单击返回顶部 双击并刷新 // 单击返回顶部 双击并刷新
if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) { if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) {
_dynamicController.onRefresh(); _dynamicController!.onRefresh();
} else { } else {
_dynamicController.animateToTop(); _dynamicController!.animateToTop();
} }
_lastSelectTime = DateTime.now().millisecondsSinceEpoch; _lastSelectTime = DateTime.now().millisecondsSinceEpoch;
} }
_dynamicController.flag = true; _dynamicController!.flag = true;
_mainController.clearUnread(); _mainController.clearUnread();
} else { } else {
_dynamicController.flag = false; _dynamicController?.flag = false;
} }
if (currentPage is MediaPage) { 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());
} }
} }