diff --git a/lib/pages/main/view.dart b/lib/pages/main/view.dart index c744098e..ee8d3829 100644 --- a/lib/pages/main/view.dart +++ b/lib/pages/main/view.dart @@ -29,6 +29,8 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { late Animation? _slideAnimation; int selectedIndex = 0; int? _lastSelectTime; //上次点击时间 + Box setting = GStrorage.setting; + late bool enableMYBar; @override void initState() { @@ -45,6 +47,7 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { Tween(begin: 0.8, end: 1.0).animate(_animationController!); _lastSelectTime = DateTime.now().millisecondsSinceEpoch; _pageController = PageController(initialPage: selectedIndex); + enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true); } void setIndex(int value) async { @@ -144,21 +147,38 @@ class _MainAppState extends State with SingleTickerProviderStateMixin { builder: (context, AsyncSnapshot snapshot) { return AnimatedSlide( curve: Curves.easeInOutCubicEmphasized, - duration: const Duration(milliseconds: 1000), + duration: const Duration(milliseconds: 500), offset: Offset(0, snapshot.data ? 0 : 1), - child: NavigationBar( - onDestinationSelected: (value) => setIndex(value), - selectedIndex: selectedIndex, - destinations: [ - ..._mainController.navigationBars.map((e) { - return NavigationDestination( - icon: e['icon'], - selectedIcon: e['selectIcon'], - label: e['label'], - ); - }).toList(), - ], - ), + child: enableMYBar + ? NavigationBar( + onDestinationSelected: (value) => setIndex(value), + selectedIndex: selectedIndex, + destinations: [ + ..._mainController.navigationBars.map((e) { + return NavigationDestination( + icon: e['icon'], + selectedIcon: e['selectIcon'], + label: e['label'], + ); + }).toList(), + ], + ) + : BottomNavigationBar( + currentIndex: selectedIndex, + onTap: (value) => setIndex(value), + iconSize: 16, + selectedFontSize: 12, + unselectedFontSize: 12, + items: [ + ..._mainController.navigationBars.map((e) { + return BottomNavigationBarItem( + icon: e['icon'], + activeIcon: e['selectIcon'], + label: e['label'], + ); + }).toList(), + ], + ), ); }, ), diff --git a/lib/pages/setting/style_setting.dart b/lib/pages/setting/style_setting.dart index 9151d79d..2256b2fd 100644 --- a/lib/pages/setting/style_setting.dart +++ b/lib/pages/setting/style_setting.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:pilipala/models/common/theme_type.dart'; @@ -78,6 +77,12 @@ class _StyleSettingState extends State { setKey: SettingBoxKey.iosTransition, defaultVal: false, ), + const SetSwitchItem( + title: 'MD3样式底栏', + subTitle: '符合Material You设计规范的底栏', + setKey: SettingBoxKey.enableMYBar, + defaultVal: true, + ), // SetSwitchItem( // title: '首页单列', // subTitle: '每行展示一个内容卡片', diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index d49bd4ad..39bb5a3d 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -136,6 +136,7 @@ class SettingBoxKey { static const String enableSingleRow = 'enableSingleRow'; // 首页单列 static const String displayMode = 'displayMode'; static const String customRows = 'customRows'; // 自定义列 + static const String enableMYBar = 'enableMYBar'; } class LocalCacheKey {