import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:mapbox_maps_flutter/mapbox_maps_flutter.dart'; import 'package:sigap/app.dart'; import 'package:sigap/navigation_menu.dart'; import 'package:sigap/src/cores/services/supabase_service.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; Future main() async { // Make sure to initialize bindings first WidgetsFlutterBinding.ensureInitialized(); // Make sure status bar is properly set SystemChrome.setSystemUIOverlayStyle( const SystemUiOverlayStyle(statusBarColor: Colors.transparent), ); // -- GetX Local Storage await GetStorage.init(); // Load environment variables from the .env file await dotenv.load(fileName: ".env"); // Initialize the authentication repository with Supabase await Supabase.initialize( url: dotenv.env['SUPABASE_URL'] ?? '', anonKey: dotenv.env['SUPABASE_ANON_KEY'] ?? '', authOptions: const FlutterAuthClientOptions( authFlowType: AuthFlowType.pkce, // detectSessionInUri: true, ), realtimeClientOptions: RealtimeClientOptions( logLevel: RealtimeLogLevel.info, ), storageOptions: const StorageClientOptions(retryAttempts: 10), ); // Register services AFTER Supabase is initialized final supabaseService = await Get.put(SupabaseService(), permanent: true).init(); Get.put( NavigationController(supabaseService: supabaseService), permanent: true, ); // Initialize the Mapbox String mapboxAccesToken = dotenv.env['MAPBOX_ACCESS_TOKEN'] ?? ''; MapboxOptions.setAccessToken(mapboxAccesToken); runApp(const App()); }