opt: navBar样式

This commit is contained in:
guozhigq
2024-04-13 01:41:24 +08:00
parent 4b3dd3ca59
commit 297ad6a46d
3 changed files with 52 additions and 45 deletions

View File

@ -20,6 +20,7 @@ import 'package:pilipala/services/disable_battery_opt.dart';
import 'package:pilipala/services/service_locator.dart'; import 'package:pilipala/services/service_locator.dart';
import 'package:pilipala/utils/app_scheme.dart'; import 'package:pilipala/utils/app_scheme.dart';
import 'package:pilipala/utils/data.dart'; import 'package:pilipala/utils/data.dart';
import 'package:pilipala/utils/global_data.dart';
import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/storage.dart';
import 'package:media_kit/media_kit.dart'; // Provides [Player], [Media], [Playlist] etc. import 'package:media_kit/media_kit.dart'; // Provides [Player], [Media], [Playlist] etc.
import 'package:pilipala/utils/recommend_filter.dart'; import 'package:pilipala/utils/recommend_filter.dart';
@ -63,14 +64,8 @@ void main() async {
}, },
); );
// 小白条、导航栏沉浸
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
systemNavigationBarColor: Colors.transparent,
systemNavigationBarDividerColor: Colors.transparent,
statusBarColor: Colors.transparent,
));
Data.init(); Data.init();
GlobalData();
PiliSchame.init(); PiliSchame.init();
DisableBatteryOpt(); DisableBatteryOpt();
}); });
@ -133,23 +128,21 @@ class MyApp extends StatelessWidget {
brightness: Brightness.dark, brightness: Brightness.dark,
); );
} }
// 图片缓存
// PaintingBinding.instance.imageCache.maximumSizeBytes = 1000 << 20; final SnackBarThemeData snackBarThemeData = SnackBarThemeData(
return GetMaterialApp( actionTextColor: darkColorScheme.primary,
title: 'PiLiPaLa', backgroundColor: darkColorScheme.secondaryContainer,
theme: ThemeData( closeIconColor: darkColorScheme.secondary,
contentTextStyle: TextStyle(color: darkColorScheme.secondary),
elevation: 20,
);
ThemeData themeData = ThemeData(
// fontFamily: 'HarmonyOS', // fontFamily: 'HarmonyOS',
colorScheme: currentThemeValue == ThemeType.dark colorScheme: currentThemeValue == ThemeType.dark
? darkColorScheme ? darkColorScheme
: lightColorScheme, : lightColorScheme,
useMaterial3: true, snackBarTheme: snackBarThemeData,
snackBarTheme: SnackBarThemeData(
actionTextColor: lightColorScheme.primary,
backgroundColor: lightColorScheme.secondaryContainer,
closeIconColor: lightColorScheme.secondary,
contentTextStyle: TextStyle(color: lightColorScheme.secondary),
elevation: 20,
),
pageTransitionsTheme: const PageTransitionsTheme( pageTransitionsTheme: const PageTransitionsTheme(
builders: <TargetPlatform, PageTransitionsBuilder>{ builders: <TargetPlatform, PageTransitionsBuilder>{
TargetPlatform.android: ZoomPageTransitionsBuilder( TargetPlatform.android: ZoomPageTransitionsBuilder(
@ -157,21 +150,29 @@ class MyApp extends StatelessWidget {
), ),
}, },
), ),
), );
darkTheme: ThemeData(
// fontFamily: 'HarmonyOS', // 小白条、导航栏沉浸
colorScheme: currentThemeValue == ThemeType.light SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
? lightColorScheme SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
: darkColorScheme, systemNavigationBarColor: GlobalData().enableMYBar
useMaterial3: true, ? themeData.colorScheme.surfaceVariant
snackBarTheme: SnackBarThemeData( : themeData.canvasColor,
actionTextColor: darkColorScheme.primary, systemNavigationBarDividerColor: GlobalData().enableMYBar
backgroundColor: darkColorScheme.secondaryContainer, ? themeData.colorScheme.surfaceVariant
closeIconColor: darkColorScheme.secondary, : themeData.canvasColor,
contentTextStyle: TextStyle(color: darkColorScheme.secondary), systemNavigationBarIconBrightness: currentThemeValue == ThemeType.dark
elevation: 20, ? Brightness.light
), : Brightness.dark,
), statusBarColor: Colors.transparent,
));
// 图片缓存
// PaintingBinding.instance.imageCache.maximumSizeBytes = 1000 << 20;
return GetMaterialApp(
title: 'PiLiPaLa',
theme: themeData,
darkTheme: themeData,
localizationsDelegates: const [ localizationsDelegates: const [
GlobalCupertinoLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
GlobalMaterialLocalizations.delegate, GlobalMaterialLocalizations.delegate,

View File

@ -10,6 +10,7 @@ import 'package:pilipala/pages/media/index.dart';
import 'package:pilipala/pages/rank/index.dart'; import 'package:pilipala/pages/rank/index.dart';
import 'package:pilipala/utils/event_bus.dart'; import 'package:pilipala/utils/event_bus.dart';
import 'package:pilipala/utils/feed_back.dart'; import 'package:pilipala/utils/feed_back.dart';
import 'package:pilipala/utils/global_data.dart';
import 'package:pilipala/utils/storage.dart'; import 'package:pilipala/utils/storage.dart';
import './controller.dart'; import './controller.dart';
@ -29,7 +30,6 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
int? _lastSelectTime; //上次点击时间 int? _lastSelectTime; //上次点击时间
Box setting = GStrorage.setting; Box setting = GStrorage.setting;
late bool enableMYBar;
@override @override
void initState() { void initState() {
@ -37,7 +37,6 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
_lastSelectTime = DateTime.now().millisecondsSinceEpoch; _lastSelectTime = DateTime.now().millisecondsSinceEpoch;
_mainController.pageController = _mainController.pageController =
PageController(initialPage: _mainController.selectedIndex); PageController(initialPage: _mainController.selectedIndex);
enableMYBar = setting.get(SettingBoxKey.enableMYBar, defaultValue: true);
} }
void setIndex(int value) async { void setIndex(int value) async {
@ -138,7 +137,7 @@ 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: enableMYBar child: GlobalData().enableMYBar
? NavigationBar( ? NavigationBar(
onDestinationSelected: (value) => setIndex(value), onDestinationSelected: (value) => setIndex(value),
selectedIndex: _mainController.selectedIndex, selectedIndex: _mainController.selectedIndex,
@ -169,6 +168,7 @@ class _MainAppState extends State<MainApp> with SingleTickerProviderStateMixin {
) )
: BottomNavigationBar( : BottomNavigationBar(
currentIndex: _mainController.selectedIndex, currentIndex: _mainController.selectedIndex,
type: BottomNavigationBarType.fixed,
onTap: (value) => setIndex(value), onTap: (value) => setIndex(value),
iconSize: 16, iconSize: 16,
selectedFontSize: 12, selectedFontSize: 12,

View File

@ -1,10 +1,16 @@
import 'package:hive/hive.dart';
import 'package:pilipala/utils/storage.dart';
import '../models/common/index.dart'; import '../models/common/index.dart';
Box setting = GStrorage.setting;
class GlobalData { class GlobalData {
int imgQuality = 10; int imgQuality = 10;
FullScreenGestureMode fullScreenGestureMode = FullScreenGestureMode fullScreenGestureMode =
FullScreenGestureMode.values.last; FullScreenGestureMode.values.last;
bool enablePlayerControlAnimation = true; bool enablePlayerControlAnimation = true;
final bool enableMYBar =
setting.get(SettingBoxKey.enableMYBar, defaultValue: true);
// 私有构造函数 // 私有构造函数
GlobalData._(); GlobalData._();