Files
finlog/finlog_app/app/lib/main.dart

59 lines
1.5 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';
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(
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,
),
);
}
}