opt: navBar样式
This commit is contained in:
@ -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,
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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._();
|
||||||
|
|||||||
Reference in New Issue
Block a user