import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'config/app_config.dart'; import 'core/router/app_router.dart'; import 'core/storage/local_storage.dart'; // Provider for Local Storage final localStorageProvider = Provider((ref) { throw UnimplementedError('localStorageProvider not initialized'); }); void main() async { WidgetsFlutterBinding.ensureInitialized(); // Resolve API Base URL (Checking Ngrok availability vs Local IP) await AppConfig.initializeApiBaseUrl(); // Initialize Local Storage (Hive) final localStorage = LocalStorage(); await localStorage.init(); runApp( ProviderScope( overrides: [ localStorageProvider.overrideWithValue(localStorage), ], child: const MainApp(), ), ); } class MainApp extends ConsumerWidget { const MainApp({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { final router = ref.watch(appRouterProvider); return MaterialApp.router( title: AppConfig.appName, theme: AppConfig.lightTheme, routerConfig: router, debugShowCheckedModeBanner: false, ); } }