mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: main page
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -23,7 +23,7 @@ class MainController extends GetxController {
|
||||
StreamController<bool>.broadcast();
|
||||
late bool hideTabBar;
|
||||
late PageController pageController;
|
||||
int selectedIndex = 0;
|
||||
RxInt selectedIndex = 0.obs;
|
||||
RxBool isLogin = false.obs;
|
||||
|
||||
late DynamicBadgeMode dynamicBadgeMode;
|
||||
@@ -203,7 +203,7 @@ class MainController extends GetxController {
|
||||
int defaultIndex =
|
||||
navigationBars.indexWhere((item) => item['id'] == defaultHomePage);
|
||||
// 如果找不到匹配项,默认索引设置为0或其他合适的值
|
||||
selectedIndex = defaultIndex != -1 ? defaultIndex : 0;
|
||||
selectedIndex.value = defaultIndex != -1 ? defaultIndex : 0;
|
||||
pages = navigationBars
|
||||
.map<Widget>((e) => switch (e['id']) {
|
||||
0 => const HomePage(),
|
||||
|
||||
@@ -33,7 +33,7 @@ class _MainAppState extends State<MainApp>
|
||||
late final _homeController = Get.put(HomeController());
|
||||
late final _dynamicController = Get.put(DynamicsController());
|
||||
|
||||
int? _lastSelectTime; //上次点击时间
|
||||
late int _lastSelectTime = 0; //上次点击时间
|
||||
late bool enableMYBar;
|
||||
late bool useSideBar;
|
||||
|
||||
@@ -42,7 +42,7 @@ class _MainAppState extends State<MainApp>
|
||||
super.initState();
|
||||
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
||||
_mainController.pageController =
|
||||
PageController(initialPage: _mainController.selectedIndex);
|
||||
PageController(initialPage: _mainController.selectedIndex.value);
|
||||
enableMYBar =
|
||||
GStorage.setting.get(SettingBoxKey.enableMYBar, defaultValue: true);
|
||||
useSideBar =
|
||||
@@ -76,7 +76,8 @@ class _MainAppState extends State<MainApp>
|
||||
void _checkDefaultSearch([bool shouldCheck = false]) {
|
||||
if (_mainController.homeIndex != -1 && _homeController.enableSearchWord) {
|
||||
if (shouldCheck &&
|
||||
_mainController.pages[_mainController.selectedIndex] is! HomePage) {
|
||||
_mainController.pages[_mainController.selectedIndex.value]
|
||||
is! HomePage) {
|
||||
return;
|
||||
}
|
||||
int now = DateTime.now().millisecondsSinceEpoch;
|
||||
@@ -92,7 +93,8 @@ class _MainAppState extends State<MainApp>
|
||||
_mainController.homeIndex != -1 &&
|
||||
_mainController.msgBadgeMode != DynamicBadgeMode.hidden) {
|
||||
if (shouldCheck &&
|
||||
_mainController.pages[_mainController.selectedIndex] is! HomePage) {
|
||||
_mainController.pages[_mainController.selectedIndex.value]
|
||||
is! HomePage) {
|
||||
return;
|
||||
}
|
||||
int now = DateTime.now().millisecondsSinceEpoch;
|
||||
@@ -105,39 +107,35 @@ class _MainAppState extends State<MainApp>
|
||||
|
||||
void setIndex(int value) async {
|
||||
feedBack();
|
||||
_mainController.pageController.jumpToPage(value);
|
||||
var currentPage = _mainController.pages[value];
|
||||
if (currentPage is HomePage) {
|
||||
if (_homeController.flag) {
|
||||
// 单击返回顶部 双击并刷新
|
||||
if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) {
|
||||
_homeController.onRefresh();
|
||||
} else {
|
||||
_homeController.animateToTop();
|
||||
}
|
||||
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
||||
}
|
||||
_homeController.flag = true;
|
||||
_checkDefaultSearch();
|
||||
_checkUnread();
|
||||
} else {
|
||||
_homeController.flag = false;
|
||||
}
|
||||
|
||||
if (currentPage is DynamicsPage) {
|
||||
if (_dynamicController.flag) {
|
||||
// 单击返回顶部 双击并刷新
|
||||
if (DateTime.now().millisecondsSinceEpoch - _lastSelectTime! < 500) {
|
||||
_dynamicController.onRefresh();
|
||||
} else {
|
||||
_dynamicController.animateToTop();
|
||||
}
|
||||
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
||||
if (value != _mainController.selectedIndex.value) {
|
||||
_mainController.selectedIndex.value = value;
|
||||
_mainController.pageController.jumpToPage(value);
|
||||
dynamic currentPage = _mainController.pages[value];
|
||||
if (currentPage is HomePage) {
|
||||
_checkDefaultSearch();
|
||||
_checkUnread();
|
||||
} else if (currentPage is DynamicsPage) {
|
||||
_mainController.setCount();
|
||||
}
|
||||
_dynamicController.flag = true;
|
||||
_mainController.setCount();
|
||||
} else {
|
||||
_dynamicController.flag = false;
|
||||
dynamic currentPage = _mainController.pages[value];
|
||||
|
||||
if (currentPage is HomePage) {
|
||||
_homeController.animateToTop();
|
||||
} else if (currentPage is DynamicsPage) {
|
||||
_dynamicController.animateToTop();
|
||||
}
|
||||
|
||||
int now = DateTime.now().millisecondsSinceEpoch;
|
||||
if (now - _lastSelectTime < 500) {
|
||||
if (currentPage is HomePage) {
|
||||
_homeController.onRefresh();
|
||||
} else if (currentPage is DynamicsPage) {
|
||||
_dynamicController.onRefresh();
|
||||
}
|
||||
}
|
||||
_lastSelectTime = now;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -156,7 +154,7 @@ class _MainAppState extends State<MainApp>
|
||||
return PopScope(
|
||||
canPop: false,
|
||||
onPopInvokedWithResult: (bool didPop, Object? result) async {
|
||||
if (_mainController.selectedIndex != 0) {
|
||||
if (_mainController.selectedIndex.value != 0) {
|
||||
setIndex(0);
|
||||
_mainController.bottomBarStream.add(true);
|
||||
} else {
|
||||
@@ -188,7 +186,8 @@ class _MainAppState extends State<MainApp>
|
||||
groupAlignment: 1,
|
||||
minWidth: context.width * 0.0286 + 28.56,
|
||||
backgroundColor: Colors.transparent,
|
||||
selectedIndex: _mainController.selectedIndex,
|
||||
selectedIndex:
|
||||
_mainController.selectedIndex.value,
|
||||
onDestinationSelected: setIndex,
|
||||
labelType: NavigationRailLabelType.none,
|
||||
leading: userAndSearchVertical,
|
||||
@@ -226,7 +225,7 @@ class _MainAppState extends State<MainApp>
|
||||
() => _mainController.navigationBars.length > 1
|
||||
? NavigationRail(
|
||||
onDestinationSelected: setIndex,
|
||||
selectedIndex: _mainController.selectedIndex,
|
||||
selectedIndex: _mainController.selectedIndex.value,
|
||||
destinations: _mainController.navigationBars
|
||||
.map(
|
||||
(e) => NavigationRailDestination(
|
||||
@@ -258,10 +257,6 @@ class _MainAppState extends State<MainApp>
|
||||
child: PageView(
|
||||
physics: const NeverScrollableScrollPhysics(),
|
||||
controller: _mainController.pageController,
|
||||
onPageChanged: (index) {
|
||||
_mainController.selectedIndex = index;
|
||||
setState(() {});
|
||||
},
|
||||
children: _mainController.pages,
|
||||
),
|
||||
),
|
||||
@@ -286,7 +281,7 @@ class _MainAppState extends State<MainApp>
|
||||
? NavigationBar(
|
||||
onDestinationSelected: setIndex,
|
||||
selectedIndex:
|
||||
_mainController.selectedIndex,
|
||||
_mainController.selectedIndex.value,
|
||||
destinations:
|
||||
_mainController.navigationBars.map(
|
||||
(e) {
|
||||
@@ -312,7 +307,7 @@ class _MainAppState extends State<MainApp>
|
||||
() => _mainController.navigationBars.length > 1
|
||||
? BottomNavigationBar(
|
||||
currentIndex:
|
||||
_mainController.selectedIndex,
|
||||
_mainController.selectedIndex.value,
|
||||
onTap: setIndex,
|
||||
iconSize: 16,
|
||||
selectedFontSize: 12,
|
||||
|
||||
Reference in New Issue
Block a user