opt: main page

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-07 20:59:37 +08:00
parent d4e381380a
commit 57722eb579
4 changed files with 40 additions and 47 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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(),

View File

@@ -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,