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._(),
);
}