opt: 首页滑动重载优化,且默认不收起顶栏和底栏

This commit is contained in:
orz12
2024-04-04 10:59:35 +08:00
parent fbce44dfad
commit 0c77439be1
5 changed files with 76 additions and 86 deletions

View File

@@ -35,7 +35,7 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
userLogin.value = userInfo != null; userLogin.value = userInfo != null;
userFace.value = userInfo != null ? userInfo.face : ''; userFace.value = userInfo != null ? userInfo.face : '';
hideSearchBar = hideSearchBar =
setting.get(SettingBoxKey.hideSearchBar, defaultValue: true); setting.get(SettingBoxKey.hideSearchBar, defaultValue: false);
if (setting.get(SettingBoxKey.enableSearchWord, defaultValue: true)) { if (setting.get(SettingBoxKey.enableSearchWord, defaultValue: true)) {
searchDefault(); searchDefault();
} }

View File

@@ -32,7 +32,7 @@ class MainController extends GetxController {
int selectedIndex = 0; int selectedIndex = 0;
Box userInfoCache = GStrorage.userInfo; Box userInfoCache = GStrorage.userInfo;
RxBool userLogin = false.obs; RxBool userLogin = false.obs;
late Rx<DynamicBadgeMode> dynamicBadgeType = DynamicBadgeMode.number.obs; late DynamicBadgeMode dynamicBadgeType;
@override @override
void onInit() { void onInit() {
@@ -40,17 +40,17 @@ class MainController extends GetxController {
if (setting.get(SettingBoxKey.autoUpdate, defaultValue: false)) { if (setting.get(SettingBoxKey.autoUpdate, defaultValue: false)) {
Utils.checkUpdate(); Utils.checkUpdate();
} }
hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: true); hideTabBar = setting.get(SettingBoxKey.hideTabBar, defaultValue: false);
int defaultHomePage = int defaultHomePage =
setting.get(SettingBoxKey.defaultHomePage, defaultValue: 0) as int; setting.get(SettingBoxKey.defaultHomePage, defaultValue: 0) as int;
selectedIndex = defaultNavigationBars selectedIndex = defaultNavigationBars
.indexWhere((item) => item['id'] == defaultHomePage); .indexWhere((item) => item['id'] == defaultHomePage);
var userInfo = userInfoCache.get('userInfoCache'); var userInfo = userInfoCache.get('userInfoCache');
userLogin.value = userInfo != null; userLogin.value = userInfo != null;
dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( dynamicBadgeType = DynamicBadgeMode.values[setting.get(
SettingBoxKey.dynamicBadgeMode, SettingBoxKey.dynamicBadgeMode,
defaultValue: DynamicBadgeMode.number.code)]; defaultValue: DynamicBadgeMode.number.code)];
if (dynamicBadgeType.value != DynamicBadgeMode.hidden) { if (dynamicBadgeType != DynamicBadgeMode.hidden) {
getUnreadDynamic(); getUnreadDynamic();
} }
} }

View File

@@ -130,25 +130,21 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
curve: Curves.easeInOutCubicEmphasized, curve: Curves.easeInOutCubicEmphasized,
duration: const Duration(milliseconds: 500), duration: const Duration(milliseconds: 500),
offset: Offset(0, snapshot.data ? 0 : 1), offset: Offset(0, snapshot.data ? 0 : 1),
child: Obx( child: enableMYBar
() => enableMYBar
? NavigationBar( ? NavigationBar(
onDestinationSelected: (value) => setIndex(value), onDestinationSelected: (value) => setIndex(value),
selectedIndex: _mainController.selectedIndex, selectedIndex: _mainController.selectedIndex,
destinations: <Widget>[ destinations: <Widget>[
..._mainController.navigationBars.map((e) { ..._mainController.navigationBars.map((e) {
return NavigationDestination( return NavigationDestination(
icon: Obx( icon: Badge(
() => Badge( label: _mainController.dynamicBadgeType ==
label:
_mainController.dynamicBadgeType.value ==
DynamicBadgeMode.number DynamicBadgeMode.number
? Text(e['count'].toString()) ? Text(e['count'].toString())
: null, : null,
padding: padding: const EdgeInsets.fromLTRB(6, 0, 6, 0),
const EdgeInsets.fromLTRB(6, 0, 6, 0),
isLabelVisible: isLabelVisible:
_mainController.dynamicBadgeType.value != _mainController.dynamicBadgeType !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&
e['count'] > 0, e['count'] > 0,
child: e['icon'], child: e['icon'],
@@ -158,7 +154,6 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
.colorScheme .colorScheme
.onInverseSurface, .onInverseSurface,
), ),
),
selectedIcon: e['selectIcon'], selectedIcon: e['selectIcon'],
label: e['label'], label: e['label'],
); );
@@ -179,17 +174,14 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
items: [ items: [
..._mainController.navigationBars.map((e) { ..._mainController.navigationBars.map((e) {
return BottomNavigationBarItem( return BottomNavigationBarItem(
icon: Obx( icon: Badge(
() => Badge( label: _mainController.dynamicBadgeType ==
label:
_mainController.dynamicBadgeType.value ==
DynamicBadgeMode.number DynamicBadgeMode.number
? Text(e['count'].toString()) ? Text(e['count'].toString())
: null, : null,
padding: padding: const EdgeInsets.fromLTRB(6, 0, 6, 0),
const EdgeInsets.fromLTRB(6, 0, 6, 0),
isLabelVisible: isLabelVisible:
_mainController.dynamicBadgeType.value != _mainController.dynamicBadgeType !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&
e['count'] > 0, e['count'] > 0,
child: e['icon'], child: e['icon'],
@@ -199,14 +191,12 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
.colorScheme .colorScheme
.onInverseSurface, .onInverseSurface,
), ),
),
activeIcon: e['selectIcon'], activeIcon: e['selectIcon'],
label: e['label'], label: e['label'],
); );
}).toList(), }).toList(),
], ],
), ),
),
); );
}, },
), ),

View File

@@ -108,9 +108,9 @@ class SettingController extends GetxController {
dynamicBadgeType.value = result; dynamicBadgeType.value = result;
setting.put(SettingBoxKey.dynamicBadgeMode, result.code); setting.put(SettingBoxKey.dynamicBadgeMode, result.code);
MainController mainController = Get.put(MainController()); MainController mainController = Get.put(MainController());
mainController.dynamicBadgeType.value = mainController.dynamicBadgeType =
DynamicBadgeMode.values[result.code]; DynamicBadgeMode.values[result.code];
if (mainController.dynamicBadgeType.value != DynamicBadgeMode.hidden) { if (mainController.dynamicBadgeType != DynamicBadgeMode.hidden) {
mainController.getUnreadDynamic(); mainController.getUnreadDynamic();
} }
SmartDialog.showToast('设置成功'); SmartDialog.showToast('设置成功');

View File

@@ -85,14 +85,14 @@ class _StyleSettingState extends State<StyleSetting> {
title: '首页顶栏收起', title: '首页顶栏收起',
subTitle: '首页列表滑动时,收起顶栏', subTitle: '首页列表滑动时,收起顶栏',
setKey: SettingBoxKey.hideSearchBar, setKey: SettingBoxKey.hideSearchBar,
defaultVal: true, defaultVal: false,
needReboot: true, needReboot: true,
), ),
const SetSwitchItem( const SetSwitchItem(
title: '首页底栏收起', title: '首页底栏收起',
subTitle: '首页列表滑动时,收起底栏', subTitle: '首页列表滑动时,收起底栏',
setKey: SettingBoxKey.hideTabBar, setKey: SettingBoxKey.hideTabBar,
defaultVal: true, defaultVal: false,
needReboot: true, needReboot: true,
), ),
const SetSwitchItem( const SetSwitchItem(