我想在資料庫中的節點上放置額外的資料,這個節點是使用geofire創建的,當我嘗試將此資訊顯示在資料庫中時,然后隱藏如下,
availableDrivers
3gDKSbnMEBYZsZDwL6lmiQerP9P2
g:
"stq5ncg7kr"
l
0: 30.0688058
1: 31.2387825
我想添加額外的資訊,例如
availableDrivers
3gDKSbnMEBYZsZDwL6lmiQerP9P2
g:
"stq5ncg7kr"
l
0: 30.0688058
1: 31.2387825
name: bishoy
age: 24
他們在我的代碼下方添加但隨后隱藏或洗掉。
主要的
DatabaseReference adminRef = FirebaseDatabase.instance.reference().child("admin");
DatabaseReference driversRef = FirebaseDatabase.instance.reference().child("drivers");
DatabaseReference newRequestRef = FirebaseDatabase.instance.reference().child("Ride Request");
DatabaseReference rideRequestRef = FirebaseDatabase.instance.reference().child("drivers").child(currentfirebaseUser!.uid).child("newRide");
DatabaseReference availableDriver = FirebaseDatabase.instance.reference().child("availableDrivers").child(currentfirebaseUser!.uid);
生成可用驅動程式的函式,我把我的額外資訊放在他們的
void makeDriverOnlineNow() async
{
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
currentPosition = position;
Map<String, dynamic> driverMap = {
"name" : driversInformation!.name,
"phone" : driversInformation!.phone,
};
Geofire.initialize("availableDrivers");
Geofire.setLocation(currentfirebaseUser!.uid, currentPosition!.latitude, currentPosition!.longitude);
await availableDriver.update(driverMap);
rideRequestRef.set("searching");
rideRequestRef.onValue.listen((event) {
});
}
void getLocationLiveUpdates()
{
homeTabPageStreamSubscription = Geolocator.getPositionStream().listen((Position position)
{
currentPosition = position;
if(isDriverAvailable == true)
{
Geofire.setLocation(currentfirebaseUser!.uid, position.latitude, position.longitude);
}
LatLng latLng = LatLng(position.latitude, position.longitude);
newcontrollerGoogleMap!.animateCamera(CameraUpdate.newLatLng(latLng));
});
}
uj5u.com熱心網友回復:
似乎無法flutter_geofire將您自己的資料添加到它管理的節點。在 Firebase 本身提供的 GeoFire 實作中,只有 Android 庫允許您將自己的資料添加到地理定位節點,我承認我不是它的忠實粉絲。
要保留您自己的資料,請像這樣設定您的資料庫:
driverLocations: {
// geolocation data, managed by geofire
"3gDKSbnMEBYZsZDwL6lmiQerP9P2": {
"g": "stq5ncg7kr",
"l": [30.0688058, 31.2387825]
}
},
drivers: {
// driver properties, managed by you
"3gDKSbnMEBYZsZDwL6lmiQerP9P2": {
name: "bishoy",
age: 24
}
}
}
現在很清楚哪些資料由誰管理,您通常只能driverLocations通過 GeoFire訪問資料。從 GeoFire 獲得驅動程式的密鑰后,您可以從/drivers/$key. 為多個驅動程式執行此操作并不像您最初預期的那么慢,因為Firebase通過單個 WebSocket 連接對請求進行管道傳輸。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/420872.html
標籤:
