setup function
Implementation
Future<void> setup({Environment env = Environment.dev}) async {
// Config
sl.registerSingleton(AppConfig.dev());
// Core Services
final navigatorKey = GlobalKey<NavigatorState>();
sl.registerSingleton(navigatorKey);
sl.registerSingleton<LogService>(ConsoleLogService());
sl.registerSingleton<UiService>(AppUiService(navigatorKey));
sl.registerSingleton<ConnectivityService>(ConnectivityServiceImpl());
// Storage - Initialize and register synchronously
final storageService = SharedPreferencesStorageService();
await storageService.init();
sl.registerSingleton<StorageService>(storageService);
// Theme - Initialize and register synchronously
final themeService = ThemeService();
await themeService.init();
sl.registerSingleton<ThemeService>(themeService);
// Dio and Network
final dio = Dio(
BaseOptions(
baseUrl: sl<AppConfig>().baseUrl,
connectTimeout: const Duration(seconds: 30),
),
);
dio.interceptors.addAll([
ConnectivityInterceptor(),
LoadingInterceptor(),
LoggingInterceptor(),
AuthInterceptor(),
ErrorInterceptor(),
]);
sl.registerSingleton<NetworkService>(DioNetworkService(dio));
}