전역 구조 리팩터링 및 테스트 확장

This commit is contained in:
JiWoong Sul
2025-09-29 01:51:47 +09:00
parent c00c0c9ab2
commit fef7108479
70 changed files with 7709 additions and 3185 deletions

View File

@@ -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,
);
},
),
),
);
}