main function Null safety

void main()

Initialises providers and passes them to descendants of MyApp.

Implementation

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);

  FirebaseFirestore firestoreInstance = FirebaseFirestore.instance;
  FirebaseFunctions functionsInstance = FirebaseFunctions.instance;
  FirebaseDatabase realtimeInstance = FirebaseDatabase.instance;

  final FirebasePairingProvider pairingProvider =
      FirebasePairingProvider(firestoreInstance: firestoreInstance);
  final FirebasePreviewProvider previewProvider =
      FirebasePreviewProvider(firestoreInstance: firestoreInstance);

  await pairingProvider.init();

  final FirebaseBatteryReporterProvider batteryReporterProvider =
      FirebaseBatteryReporterProvider(
    firestoreInstance: firestoreInstance,
    functionsInstance: functionsInstance,
    token: pairingProvider.getToken() ?? "Unknown",
  );
  // batteryReporterProvider is initialised when showing the preview
  // await batteryReporterProvider.init();

  final FirebaseConnectivityProvider connectivityProvider =
      FirebaseConnectivityProvider(
    firestoreInstance: firestoreInstance,
    functionsInstance: functionsInstance,
    realtimeInstance: realtimeInstance,
    token: pairingProvider.getToken() ?? "Unknown",
  );
  // connectivityProvider is initialised when showing the preview
  // connectivityProvider.init();

  runApp(MultiProvider(
    providers: [
      ChangeNotifierProvider(create: (context) => pairingProvider),
      ChangeNotifierProvider(create: (context) => previewProvider),
      ChangeNotifierProvider(create: (context) => batteryReporterProvider),
      ChangeNotifierProvider(create: (context) => connectivityProvider),
    ],
    child: const MyApp(),
  ));
}