63 lines
1.7 KiB
Dart
63 lines
1.7 KiB
Dart
import 'package:app/core/app/router.dart';
|
|
import 'package:app/core/app/startup/domain/initialize_app.dart';
|
|
import 'package:app/core/app/theme.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:fluttery/fluttery.dart';
|
|
import 'package:fluttery/logger.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
Future<void> main() async {
|
|
// Ensures that the Flutter engine and widget binding
|
|
// are initialized before using async services or plugins
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
|
// any services
|
|
App.registerDefaultServices();
|
|
|
|
final logger = App.service<Logger>();
|
|
logger.debug("[MAIN] Registered all default services");
|
|
|
|
// Run initialization before building router
|
|
final init = InitializeAppUseCase();
|
|
final startRoute = await init();
|
|
|
|
final themeController = ThemeController();
|
|
await themeController.init();
|
|
|
|
runApp(
|
|
MultiProvider(
|
|
providers: [ChangeNotifierProvider(create: (context) => themeController)],
|
|
child: FinlogApp(
|
|
router: buildAppRouter(startRoute),
|
|
themeController: themeController,
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
class FinlogApp extends StatelessWidget {
|
|
final GoRouter router;
|
|
final ThemeController themeController;
|
|
|
|
const FinlogApp({
|
|
super.key,
|
|
required this.router,
|
|
required this.themeController,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return AnimatedBuilder(
|
|
animation: themeController,
|
|
builder: (context, _) => MaterialApp.router(
|
|
title: 'Finlog',
|
|
theme: ThemeData.light(),
|
|
darkTheme: ThemeData.dark(),
|
|
themeMode: themeController.themeMode,
|
|
routerConfig: router,
|
|
),
|
|
);
|
|
}
|
|
}
|