main function Null safety Main

Future<void> main()

Implementation

Future<void> main() async {
  AppConfig.appFlavor = Flavor.TEST;
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();

  // try {
  //   FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
  // } catch (e) {
  //   LogManager().addLog(e.toString());
  // }

  /// foreground(앱 실행중일때) 알림 표시
  FirebaseMessaging.onMessage.listen((RemoteMessage message) {
    LogManager().addLog("receive push message on foreground: ${message.data}");
    NotificationService().firebaseMessagingForegroundHandler(message);
  });

  runApp(
    MultiProvider(
      providers: [
        /// Data Stores
        ChangeNotifierProvider(create: (_) => FarmState()),
        ChangeNotifierProvider(create: (_) => SensorState()),
        ChangeNotifierProvider(create: (_) => GatewayState()),
        ChangeNotifierProvider(create: (_) => ReportState()),
        ChangeNotifierProvider(create: (_) => CowState()),
        ChangeNotifierProvider(create: (_) => CowGroupState()),
        ChangeNotifierProvider(create: (_) => UserState()),

        /// ViewModels
        ChangeNotifierProvider(create: (_) => FarmLoadingScreenVM()),
        ChangeNotifierProvider(create: (_) => CowCurrentStatusScreenVM()),
        ChangeNotifierProvider(create: (_) => HomeScreenVM()),
        ChangeNotifierProvider(create: (_) => SettingsScreenVM()),
        ChangeNotifierProvider(create: (_) => CowSettingsScreenVM()),
        ChangeNotifierProvider(create: (_) => FarmInfoScreenVM()),
        ChangeNotifierProvider(create: (_) => ChatScreenVM()),
        ChangeNotifierProvider(create: (_) => DiseaseObservationCreateScreenVM()),
        ChangeNotifierProvider(create: (_) => DiseaseObservationListScreenVM()),

        /// Etc..
        ChangeNotifierProvider(create: (_) => AppState()),
        ChangeNotifierProvider(create: (_) => ScrollState()),
      ],
      child: AppEntry(),
    ),
  );
}