11import 'package:audio_service/audio_service.dart' ;
2+ import 'package:auto_route/auto_route.dart' ;
23
34import 'package:bujuan/common/bujuan_audio_handler.dart' ;
45import 'package:bujuan/common/constants/other.dart' ;
56import 'package:bujuan/common/constants/platform_utils.dart' ;
67import 'package:bujuan/common/netease_api/netease_music_api.dart' ;
7- import 'package:bujuan/pages/a_rebuild/home/home.dart' ;
8- import 'package:bujuan/pages/a_rebuild/outside/outside.dart' ;
9- import 'package:bujuan/pages/a_rebuild/playlist/playlist.dart' ;
10- import 'package:bujuan/pages/a_rebuild/user/user.dart' ;
11- import 'package:bujuan/pages/login/login.dart' ;
8+ import 'package:bujuan/pages/album/controller.dart' ;
9+ import 'package:bujuan/pages/home/home_binding.dart' ;
10+ import 'package:bujuan/pages/index/cound_controller.dart' ;
11+ import 'package:bujuan/pages/index/index_controller.dart' ;
12+ import 'package:bujuan/pages/play_list/playlist_controller.dart' ;
13+ import 'package:bujuan/pages/playlist_manager/playlist_manager_controller.dart' ;
14+ import 'package:bujuan/pages/user/user_controller.dart' ;
15+ import 'package:bujuan/routes/router.gr.dart' ;
1216import 'package:flutter/material.dart' ;
1317import 'package:flutter/services.dart' ;
1418import 'package:flutter_displaymode/flutter_displaymode.dart' ;
1519import 'package:flutter_riverpod/flutter_riverpod.dart' ;
1620import 'package:flutter_screenutil/flutter_screenutil.dart' ;
21+ import 'package:flutter_zoom_drawer/flutter_zoom_drawer.dart' ;
22+ import 'package:get/get.dart' ;
1723import 'package:get_it/get_it.dart' ;
1824import 'package:go_router/go_router.dart' ;
1925import 'package:hive_flutter/hive_flutter.dart' ;
@@ -27,6 +33,7 @@ main() async {
2733 bool land = PlatformUtils .isMacOS || PlatformUtils .isWindows || OtherUtils .isPad ();
2834 final getIt = GetIt .instance;
2935 await _initAudioServer (getIt);
36+ final rootRouter = getIt <RootRouter >();
3037 if (PlatformUtils .isAndroid) {
3138 // await FlutterDisplayMode.setHighRefreshRate();
3239 // SystemChrome.setEnabledSystemUIMode(
@@ -44,118 +51,114 @@ main() async {
4451 SystemChrome .setPreferredOrientations ([DeviceOrientation .landscapeLeft, DeviceOrientation .landscapeRight]);
4552 }
4653 //外部
47- final rootNavigatorKey = GlobalKey <NavigatorState >();
48- final shellNavigatorKey = GlobalKey <NavigatorState >();
49- final router = GoRouter (
50- navigatorKey: rootNavigatorKey,
51- routes: [
52- ShellRoute (navigatorKey: shellNavigatorKey, builder: (BuildContext context, GoRouterState state, Widget child) => Outside (child: child), routes: [
53- GoRoute (path: '/' , builder: (c, s) => const HomePage (), routes: [
54- GoRoute (path: 'playlist' , builder: (c, s) => PlayList (s.extra! as Play )),
55- ]),
56- GoRoute (path: '/user' , builder: (c, s) => const User ()),
57- GoRoute (path: '/login' , builder: (c, s) => const LoginViewPage ()),
58- ])
59- ],
60- );
61- SystemChrome .setEnabledSystemUIMode (SystemUiMode .edgeToEdge).then ((value) => runApp (ProviderScope (
62- child: ScreenUtilInit (
63- designSize: const Size (750 , 1334 ),
64- minTextAdapt: true ,
65- splitScreenMode: true ,
66- builder: (context, child) {
67- return MaterialApp .router (
68- // showPerformanceOverlay: true,
69- theme: AppTheme .light,
70- routerConfig: router,
71- );
72- }))));
73- // SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge).then((value) => runApp(ScreenUtilInit(
74- // designSize: !land ? const Size(750, 1334) : const Size(2339, 1080),
75- // minTextAdapt: true,
76- // splitScreenMode: true,
77- // builder: (BuildContext context, Widget? child) {
78- // HomeBinding().dependencies();
79- // return GetMaterialApp.router(
80- // title: "Bujuan",
81- // theme: AppTheme.light,
82- // darkTheme: AppTheme.dark,
83- // // showPerformanceOverlay: true,
84- // // checkerboardOffscreenLayers: true,
85- // // checkerboardRasterCacheImages: true,
86- // themeMode: ThemeMode.system,
87- // routerDelegate: rootRouter.delegate(navigatorObservers: () => [MyObserver()]),
88- // routeInformationParser: rootRouter.defaultRouteParser(),
89- // debugShowCheckedModeBanner: false,
90- // builder: (_, router) => MediaQuery(data: MediaQuery.of(_).copyWith(textScaleFactor: 1.0), child: router!),
91- // );
92- // },
93- // )));
54+ // final rootNavigatorKey = GlobalKey<NavigatorState>();
55+ // final shellNavigatorKey = GlobalKey<NavigatorState>();
56+ // final router = GoRouter(
57+ // navigatorKey: rootNavigatorKey,
58+ // routes: [
59+ // ShellRoute(navigatorKey: shellNavigatorKey, builder: (BuildContext context, GoRouterState state, Widget child) => Outside(child: child), routes: [
60+ // GoRoute(path: '/', builder: (c, s) => const HomePage(), routes: [
61+ // GoRoute(path: 'playlist', builder: (c, s) => PlayList(s.extra! as Play)),
62+ // ]),
63+ // GoRoute(path: '/user', builder: (c, s) => const User()),
64+ // GoRoute(path: '/login', builder: (c, s) => const LoginViewPage()),
65+ // ])
66+ // ],
67+ // );
68+ // SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge).then((value) => runApp(ProviderScope(
69+ // child: ScreenUtilInit(
70+ // designSize: const Size(750, 1334),
71+ // minTextAdapt: true,
72+ // splitScreenMode: true,
73+ // builder: (context, child) {
74+ // return MaterialApp.router(
75+ // // showPerformanceOverlay: true,
76+ // theme: AppTheme.light,
77+ // routerConfig: router,
78+ // );
79+ // }))));
80+ SystemChrome .setEnabledSystemUIMode (SystemUiMode .edgeToEdge).then ((value) => runApp (ScreenUtilInit (
81+ designSize: ! land ? const Size (750 , 1334 ) : const Size (2339 , 1080 ),
82+ minTextAdapt: true ,
83+ splitScreenMode: true ,
84+ builder: (BuildContext context, Widget ? child) {
85+ HomeBinding ().dependencies ();
86+ return GetMaterialApp .router (
87+ title: "Bujuan" ,
88+ theme: AppTheme .light,
89+ darkTheme: AppTheme .dark,
90+ // showPerformanceOverlay: true,
91+ // checkerboardOffscreenLayers: true,
92+ // checkerboardRasterCacheImages: true,
93+ themeMode: ThemeMode .system,
94+ routerDelegate: rootRouter.delegate (navigatorObservers: () => [MyObserver ()]),
95+ routeInformationParser: rootRouter.defaultRouteParser (),
96+ debugShowCheckedModeBanner: false ,
97+ builder: (_, router) => MediaQuery (data: MediaQuery .of (_).copyWith (textScaleFactor: 1.0 ), child: router! ),
98+ );
99+ },
100+ )));
94101}
95102
96- // class MyObserver extends AutoRouterObserver {
97- // _clearOrPutController(String name, {bool del = false}) {
98- // if (name.isEmpty) return;
99- // switch (name) {
100- // case 'AlbumView':
101- // del ? Get.delete<CloudController>() : Get.lazyPut<CloudController>(() => CloudController());
102- // break;
103- // case 'MainView':
104- // del ? Get.delete<IndexController>() : Get.lazyPut<IndexController>(() => IndexController());
105- // break;
106- // case 'UserView':
107- // del ? Get.delete<UserController>() : Get.lazyPut<UserController>(() => UserController());
108- // break;
109- // case 'PlayListView':
110- // del ? Get.delete<PlayListController>() : Get.lazyPut<PlayListController>(() => PlayListController());
111- // break;
112- // case 'AlbumDetails':
113- // del ? Get.delete<AlbumController>() : Get.lazyPut<AlbumController>(() => AlbumController());
114- // break;
115- // case 'PlaylistManagerView':
116- // del ? Get.delete<PlaylistManager>() : Get.lazyPut<PlaylistManager>(() => PlaylistManager());
117- // break;
118- // }
119- // }
120- //
121- // @override
122- // void didPush(Route route, Route? previousRoute) {
123- // super.didPush(route, previousRoute);
124- // _clearOrPutController(route.settings.name ?? '');
125- // print('New route pushed: ${route.settings.name}');
126- // }
127- //
128- // @override
129- // void didRemove(Route route, Route? previousRoute) {
130- // // TODO: implement didRemove
131- // super.didRemove(route, previousRoute);
132- // _clearOrPutController(route.settings.name ?? '', del: true);
133- // }
134- //
135- // @override
136- // void didPop(Route route, Route? previousRoute) {
137- // // TODO: implement didPop
138- // super.didPop(route, previousRoute);
139- // _clearOrPutController(route.settings.name ?? '', del: true);
140- // }
141- //
142- // @override
143- // void didReplace({Route? newRoute, Route? oldRoute}) {
144- // super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
145- // }
146- //
147- // // only override to observer tab routes
148- // @override
149- // void didInitTabRoute(TabPageRoute route, TabPageRoute? previousRoute) {}
150- //
151- // @override
152- // void didChangeTabRoute(TabPageRoute route, TabPageRoute previousRoute) {}
153- // }
103+ class MyObserver extends AutoRouterObserver {
104+ _clearOrPutController (String name, {bool del = false }) {
105+ if (name.isEmpty) return ;
106+ switch (name) {
107+ case 'AlbumView' :
108+ del ? Get .delete <CloudController >() : Get .lazyPut <CloudController >(() => CloudController ());
109+ break ;
110+ case 'MainView' :
111+ del ? Get .delete <IndexController >() : Get .lazyPut <IndexController >(() => IndexController ());
112+ break ;
113+ case 'UserView' :
114+ del ? Get .delete <UserController >() : Get .lazyPut <UserController >(() => UserController ());
115+ break ;
116+ case 'PlayListView' :
117+ del ? Get .delete <PlayListController >() : Get .lazyPut <PlayListController >(() => PlayListController ());
118+ break ;
119+ case 'AlbumDetails' :
120+ del ? Get .delete <AlbumController >() : Get .lazyPut <AlbumController >(() => AlbumController ());
121+ break ;
122+ case 'PlaylistManagerView' :
123+ del ? Get .delete <PlaylistManager >() : Get .lazyPut <PlaylistManager >(() => PlaylistManager ());
124+ break ;
125+ }
126+ }
127+
128+ @override
129+ void didPush (Route route, Route ? previousRoute) {
130+ super .didPush (route, previousRoute);
131+ _clearOrPutController (route.settings.name ?? '' );
132+ print ('New route pushed: ${route .settings .name }' );
133+ }
134+
135+ @override
136+ void didRemove (Route route, Route ? previousRoute) {
137+ // TODO: implement didRemove
138+ super .didRemove (route, previousRoute);
139+ _clearOrPutController (route.settings.name ?? '' , del: true );
140+ }
141+
142+ @override
143+ void didPop (Route route, Route ? previousRoute) {
144+ // TODO: implement didPop
145+ super .didPop (route, previousRoute);
146+ _clearOrPutController (route.settings.name ?? '' , del: true );
147+ }
148+
149+
150+ // only override to observer tab routes
151+ @override
152+ void didInitTabRoute (TabPageRoute route, TabPageRoute ? previousRoute) {}
153+
154+ @override
155+ void didChangeTabRoute (TabPageRoute route, TabPageRoute previousRoute) {}
156+ }
154157
155158Future <void > _initAudioServer (getIt) async {
156- // getIt.registerSingleton<RootRouter>(RootRouter());
159+ getIt.registerSingleton <RootRouter >(RootRouter ());
157160 getIt.registerSingleton <AudioPlayer >(AudioPlayer ());
158- // getIt.registerSingleton<ZoomDrawerController>(ZoomDrawerController());
161+ getIt.registerSingleton <ZoomDrawerController >(ZoomDrawerController ());
159162 await Hive .initFlutter ('BuJuan' );
160163 getIt.registerSingleton <Box >(await Hive .openBox ('cache' ));
161164 await NeteaseMusicApi .init (debug: false );
0 commit comments