73 lines
2.1 KiB
Dart
73 lines
2.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_localizations/flutter_localizations.dart';
|
|
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();
|
|
await Environment.initialize();
|
|
await initInjection(baseUrl: Environment.baseUrl);
|
|
runApp(const SuperportApp());
|
|
}
|
|
|
|
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 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,
|
|
);
|
|
},
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|