initialize method
Initialize Firebase services
Implementation
Future<void> initialize() async {
if (_isInitialized) {
FinanceSdkLogger.info('Firebase already initialized');
return;
}
try {
FinanceSdkLogger.info('Initializing Firebase services...');
// Initialize Firebase Core using MyPluginFirebase configuration (named app)
final FirebaseApp app = await MyPluginFirebase.initialize();
// Initialize Firestore bound to the plugin's Firebase app
_firestore = FirebaseFirestore.instanceFor(app: app);
// Initialize Remote Config bound to the plugin's Firebase app
_remoteConfig = FirebaseRemoteConfig.instanceFor(app: app);
await _remoteConfig!.setConfigSettings(RemoteConfigSettings(
fetchTimeout: const Duration(minutes: 1),
minimumFetchInterval: const Duration(hours: 1),
));
// Initialize SharedPreferences for caching
_prefs = await SharedPreferences.getInstance();
// Load cached data
await _loadCachedData();
// Load base URL override if exists
final override = _prefs!.getString('${_cacheKeyBaseUrl}_override');
if (override != null) {
_baseUrlOverride = override;
FinanceSdkLogger.info('Loaded base URL override: $override');
}
// Load bearer token if exists
final token = _prefs!.getString(_cacheKeyBearerToken);
if (token != null) {
_bearerToken = token;
FinanceSdkLogger.info('Loaded bearer token');
}
// Fetch fresh data
await _fetchAllData();
_isInitialized = true;
FinanceSdkLogger.info('Firebase services initialized successfully');
} catch (e) {
FinanceSdkLogger.error('Failed to initialize Firebase services', e);
rethrow;
}
}