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