feat: 侧边栏适配异形屏、分区子侧栏内边距优化

This commit is contained in:
orz12
2024-06-12 20:18:27 +08:00
parent 2035ae90f3
commit 6ac24ef52c
3 changed files with 48 additions and 35 deletions

View File

@@ -39,10 +39,9 @@ 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);
useSideBar = useSideBar = setting.get(SettingBoxKey.useSideBar, defaultValue: false);
setting.get(SettingBoxKey.useSideBar, defaultValue: false); enableGradientBg =
enableGradientBg = setting.get(SettingBoxKey.enableGradientBg, setting.get(SettingBoxKey.enableGradientBg, defaultValue: true);
defaultValue: true);
} }
void setIndex(int value) async { void setIndex(int value) async {
@@ -152,7 +151,7 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
children: [ children: [
if (useSideBar) ...[ if (useSideBar) ...[
SizedBox( SizedBox(
width: 55, width: 55 + MediaQuery.of(context).padding.left,
child: NavigationRail( child: NavigationRail(
groupAlignment: 0.0, groupAlignment: 0.0,
minWidth: 40.0, minWidth: 40.0,
@@ -170,8 +169,11 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
DynamicBadgeMode.number DynamicBadgeMode.number
? Text(e['count'].toString()) ? Text(e['count'].toString())
: null, : null,
padding: padding: EdgeInsets.fromLTRB(
const EdgeInsets.fromLTRB(2, 0, 2, 0), 2 + MediaQuery.of(context).padding.left,
0,
2,
0),
isLabelVisible: isLabelVisible:
_mainController.dynamicBadgeType != _mainController.dynamicBadgeType !=
DynamicBadgeMode.hidden && DynamicBadgeMode.hidden &&

View File

@@ -88,15 +88,23 @@ class _RankPageState extends State<RankPage>
child: ConstrainedBox( child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraint.maxHeight), constraints: BoxConstraints(minHeight: constraint.maxHeight),
child: IntrinsicHeight( child: IntrinsicHeight(
child: MediaQuery.removePadding(
context: context,
removeLeft: true,
removeRight: true,
removeTop: true,
child: NavigationRail( child: NavigationRail(
groupAlignment: -1.0,
backgroundColor: Colors.transparent, backgroundColor: Colors.transparent,
minWidth: 50.0, minWidth: 40.0,
useIndicator: false,
// elevation: 0, // elevation: 0,
selectedIndex: _selectedTabIndex, selectedIndex: _selectedTabIndex,
onDestinationSelected: (int index) { onDestinationSelected: (int index) {
feedBack(); feedBack();
if (_selectedTabIndex == index) { if (_selectedTabIndex == index) {
_rankController.tabsCtrList[index]().animateToTop(); _rankController.tabsCtrList[index]()
.animateToTop();
} else { } else {
setState(() { setState(() {
_rankController.tabController.index = index; _rankController.tabController.index = index;
@@ -108,13 +116,16 @@ class _RankPageState extends State<RankPage>
destinations: [ destinations: [
for (var tab in _rankController.tabs) for (var tab in _rankController.tabs)
NavigationRailDestination( NavigationRailDestination(
icon: Text(tab['label']), icon: Padding(
padding: const EdgeInsets.symmetric(
vertical: 4),
child: Text(tab['label'])),
// selectedIcon: Text(tab['label']), // selectedIcon: Text(tab['label']),
label: const SizedBox.shrink(), label: const SizedBox.shrink(),
), ),
], ],
trailing: const SizedBox(height: 100), trailing: const SizedBox(height: 100),
)))); )))));
}), }),
Expanded( Expanded(
child: TabBarView( child: TabBarView(

View File

@@ -85,7 +85,7 @@ class _ZonePageState extends State<ZonePage>
SliverPadding( SliverPadding(
// 单列布局 EdgeInsets.zero // 单列布局 EdgeInsets.zero
padding: padding:
const EdgeInsets.fromLTRB(StyleString.safeSpace, StyleString.safeSpace, 0, 0), const EdgeInsets.fromLTRB(StyleString.cardSpace, StyleString.safeSpace, 0, 0),
sliver: FutureBuilder( sliver: FutureBuilder(
future: _futureBuilderFuture, future: _futureBuilderFuture,
builder: (context, snapshot) { builder: (context, snapshot) {