init static method Null safety

Future<MultiProvider> init(
  1. {Widget builder(
    1. BuildContext,
    2. Widget?
    )?,
  2. required bool isDebug,
  3. required String rudderWriteKey,
  4. required String rudderDataPlaneUrl}
)

Implementation

static Future<MultiProvider> init({
  Widget Function(BuildContext, Widget?)? builder,
  required bool isDebug,
  required String rudderWriteKey,
  required String rudderDataPlaneUrl,
}) async {
  return MultiProvider(
    builder: builder,
    providers: [
      // [Provider] create/update are lazy by default
      Provider<UserService>(
        create: (_) => const UserService(),
      ),
      Provider<LicenseService>(
        create: (_) => const LicenseService(),
      ),
      // Provider<ExerciseRepository>(
      //   create: (_) => ExerciseRepository(),
      // ),
      Provider<AnalyticService>(
        lazy: false, // Track lifecycle events
        create: (_) => AnalyticService(
            rudder: RudderController.instance
              ..initialize(
                rudderWriteKey,
                config: RudderConfigBuilder()
                    .withDataPlaneUrl(rudderDataPlaneUrl)
                    .withFactory(RudderIntegrationFirebaseFlutter())
                    .withDebug(isDebug)
                    .build(),
              )),
      ),
      Provider<InfoService>(
        create: (_) => InfoService(analytic: _.read()),
      ),
      // Provider<MessageService>(
      //   create: (_) => MessageService(),
      // ),
      Provider<PerformanceService>(
        create: (_) =>
            PerformanceService(performance: FirebasePerformance.instance),
      ),

      // Provider<FirebaseAppCheck>(
      //   create: (_) => FirebaseAppCheck.instance,
      // ),
      // Provider<FirebaseInAppMessaging>(
      //   create: (_) => FirebaseInAppMessaging.instance,
      // ),
      // ListenableProvider<FirebaseRemoteConfig>(
      //   create: (_) {
      //     if (remoteConfig != null) {
      //       FirebaseRemoteConfig.instance.setConfigSettings(remoteConfig!);
      //     }

      //     return FirebaseRemoteConfig.instance;
      //   },
      // ),
      // Provider<GlobalKey<NavigatorState>>.value(
      //   value: AppRouter.defaultNavigator,
      // ),
      // if (!kIsWeb)
      //   Provider<RisoShader>.value(
      //     value: await RisoShader.load(),
      //   ),
      // Provider<Browser>(
      //   create: (context) => Browser(analytics: ),
      // ),

      Provider<LocalDatabase>(
        create: (_) => LocalDatabase(),
      ),
    ],
    child: const App._(),
  );
}