전역 구조 리팩터링 및 테스트 확장
This commit is contained in:
@@ -4,7 +4,10 @@ import 'package:shadcn_ui/shadcn_ui.dart';
|
||||
|
||||
import 'core/config/environment.dart';
|
||||
import 'core/routing/app_router.dart';
|
||||
import 'core/theme/superport_shad_theme.dart';
|
||||
import 'core/theme/theme_controller.dart';
|
||||
import 'injection_container.dart';
|
||||
import 'core/permissions/permission_manager.dart';
|
||||
|
||||
Future<void> main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
@@ -13,28 +16,56 @@ Future<void> main() async {
|
||||
runApp(const SuperportApp());
|
||||
}
|
||||
|
||||
class SuperportApp extends StatelessWidget {
|
||||
class SuperportApp extends StatefulWidget {
|
||||
const SuperportApp({super.key});
|
||||
|
||||
@override
|
||||
State<SuperportApp> createState() => _SuperportAppState();
|
||||
}
|
||||
|
||||
class _SuperportAppState extends State<SuperportApp> {
|
||||
late final ThemeController _themeController;
|
||||
late final PermissionManager _permissionManager;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_themeController = ThemeController();
|
||||
_permissionManager = PermissionManager();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_themeController.dispose();
|
||||
_permissionManager.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ShadApp.router(
|
||||
title: 'Superport v2',
|
||||
routerConfig: appRouter,
|
||||
debugShowCheckedModeBanner: false,
|
||||
supportedLocales: const [Locale('ko', 'KR'), Locale('en', 'US')],
|
||||
localizationsDelegates: const [
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: ShadThemeData(
|
||||
colorScheme: const ShadSlateColorScheme.light(),
|
||||
brightness: Brightness.light,
|
||||
),
|
||||
darkTheme: ShadThemeData(
|
||||
colorScheme: const ShadSlateColorScheme.dark(),
|
||||
brightness: Brightness.dark,
|
||||
return PermissionScope(
|
||||
manager: _permissionManager,
|
||||
child: ThemeControllerScope(
|
||||
controller: _themeController,
|
||||
child: AnimatedBuilder(
|
||||
animation: _themeController,
|
||||
builder: (context, _) {
|
||||
return ShadApp.router(
|
||||
title: 'Superport v2',
|
||||
routerConfig: appRouter,
|
||||
debugShowCheckedModeBanner: false,
|
||||
supportedLocales: const [Locale('ko', 'KR'), Locale('en', 'US')],
|
||||
localizationsDelegates: const [
|
||||
GlobalMaterialLocalizations.delegate,
|
||||
GlobalWidgetsLocalizations.delegate,
|
||||
GlobalCupertinoLocalizations.delegate,
|
||||
],
|
||||
theme: SuperportShadTheme.light(),
|
||||
darkTheme: SuperportShadTheme.dark(),
|
||||
themeMode: _themeController.mode,
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user