import 'package:firebase_app_check/firebase_app_check.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'app.dart'; import 'core/settings/settings_provider.dart'; import 'firebase_options.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); // Release-Builds (TestFlight/Play): echte Attestierung über Play Integrity // (Android) bzw. App Attest (iOS). Debug-Builds nutzen weiter den // Debug-Provider mit den in der Firebase-Console hinterlegten Debug-Tokens. // Die onCall-Functions erzwingen App Check (enforceAppCheck: true), deshalb // muss ein Release-Build zwingend einen echten Provider verwenden. // Siehe docs/firebase-einrichtung.md Schritt 9. await FirebaseAppCheck.instance.activate( providerAndroid: kReleaseMode ? const AndroidPlayIntegrityProvider() : AndroidDebugProvider(), providerApple: kReleaseMode ? const AppleAppAttestProvider() : AppleDebugProvider(), ); final prefs = await SharedPreferences.getInstance(); runApp( ProviderScope( overrides: [sharedPreferencesProvider.overrideWithValue(prefs)], child: const LeafItToMeApp(), ), ); }