main function Null safety
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(),
));
}