![](/img/trans.png)
[英]how do i get my android app which is connected to a realtime firebase database to create a toast on update in the realtime database?
[英]How do I connect to my local Realtime Database emulator in my Flutter app?
我正在為我的 Flutter 應用程序使用實時數據庫和函數。 我已經為數據庫和函數設置了本地模擬器,所以我可以在本地測試函數而無需部署成本。 現在我想將我的 Flutter 應用程序連接到這些本地模擬器,但是我在找出如何去做時遇到了一些麻煩。
FlutterFire 文檔描述了如何為 Firestore ( https://firebase.flutter.dev/docs/firestore/usage#emulator-usage ) 執行此操作,但不適用於實時數據庫。 即使我使用的是實時數據庫,肯定也必須有一種方法可以連接到模擬器嗎?
我嘗試了以下方法:
String host = Platform.isAndroid ? '10.0.2.2:4000' : 'localhost:4000';
FirebaseDatabase database = FirebaseDatabase(
app: Firebase.app(),
databaseURL: host,
);
但這給了我錯誤:
未處理的異常:PlatformException(錯誤,指定的 Firebase 數據庫網址無效:10.0.2.2:4000,空)
我在 pub 上使用 firebase_core 和 firebase_database 包。
根據適用於 Android 的 Firebase 文檔,使用實時數據庫模擬器需要調用database.useEmulator("10.0.2.2", 9000)
。 對 FlutterFire 代碼的快速搜索顯示沒有這樣的調用,所以似乎 FlutterFire 中還沒有實現模擬器的使用。
我也找不到它的未解決問題,因此您可能想要提交功能請求。
深入研究 Firebase Java SDK,我發現.useEmulator()
僅設置用於創建databaseURL
host
和port
,簡而言之,它只是一個重構包裝器。
下面的代碼應該適用於 FlutterFire 實時數據庫包:
String host = Platform.isAndroid ? 'http://10.0.2.2:9000' : 'http://localhost:9000';
FirebaseDatabase database = FirebaseDatabase(
app: Firebase.app(),
databaseURL: host,
);
另外,請檢查您的firebase.json
以獲取要使用的正確端口。 數據庫的默認值應該是9000
。
{
"firestore": {
"rules": "firestore.rules",
"indexes": "firestore.indexes.json"
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
],
"source": "functions"
},
"storage": {
"rules": "storage.rules"
},
"emulators": {
"auth": {
"port": 9099
},
"functions": {
"port": 5001
},
"firestore": {
"port": 8080
},
"database": {
"port": 9000
},
"ui": {
"enabled": true
}
}
}
以下代碼對我有用。 它幾乎類似於@Florin Stan 的回答。 只是缺少數據庫的命名空間。
String host = Platform.isAndroid ? 'http://10.0.2.2:9000' : 'http://localhost:9000';
dbInstance= FirebaseDatabase(
databaseURL: '$host?ns=YOUR_DATABASE_NAMESPACE',
);
數據庫命名空間可以在 firebase 實時數據庫模擬器 UI 中找到。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.