From b7bba3370d14ef8e525b297fdddd50fd0167821d Mon Sep 17 00:00:00 2001 From: Jude Kwashie Date: Tue, 16 Jun 2026 15:00:07 +0000 Subject: [PATCH] fix(database, iOS): prevent duplicate database instance initialization in `FLTFirebaseDatabasePlugin` --- .../FLTFirebaseDatabasePlugin.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FLTFirebaseDatabasePlugin.swift b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FLTFirebaseDatabasePlugin.swift index d94bc937593f..469164b0256f 100644 --- a/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FLTFirebaseDatabasePlugin.swift +++ b/packages/firebase_database/firebase_database/ios/firebase_database/Sources/firebase_database/FLTFirebaseDatabasePlugin.swift @@ -169,6 +169,12 @@ public class FLTFirebaseDatabasePlugin: NSObject, FlutterPlugin, FLTFirebasePlug app: DatabasePigeonFirebaseApp, host: String, port: Int64, completion: @escaping (Result) -> Void ) { + let instanceKey = databaseInstanceKey(app) + guard Self.cachedDatabaseInstances[instanceKey] == nil else { + completion(.success(())) + return + } + let database = getDatabaseFromPigeonApp(app) database.useEmulator(withHost: host, port: Int(port)) completion(.success(())) @@ -733,8 +739,12 @@ public class FLTFirebaseDatabasePlugin: NSObject, FlutterPlugin, FLTFirebasePlug // MARK: - Helper Methods + private func databaseInstanceKey(_ app: DatabasePigeonFirebaseApp) -> String { + app.appName + (app.databaseURL ?? "") + } + private func getDatabaseFromPigeonApp(_ app: DatabasePigeonFirebaseApp) -> Database { - let instanceKey = app.appName + (app.databaseURL ?? "") + let instanceKey = databaseInstanceKey(app) if let cachedInstance = Self.cachedDatabaseInstances[instanceKey] { return cachedInstance