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