Flutter中如何从Firebase实时数据库指定节点获取列表数据
实现方案
你可以直接在现有逻辑基础上读取同节点下的destination列表字段即可,参考代码如下:
DatabaseReference rideRef = FirebaseDatabase.instance.reference().child('rideRequest/$rideID'); rideRef.once().then((DataSnapshot snapshot){ Navigator.pop(context); if(snapshot.value != null){ print(snapshot.value); double pickupLat = double.parse(snapshot.value['pickup_location']['latitude'].toString()); double pickupLng = double.parse(snapshot.value['pickup_location']['longitude'].toString()); String pickupAddress = snapshot.value['pickup_address'].toString(); // 以下为获取destination列表的逻辑 List<Map<String,dynamic>> destinationList = []; if(snapshot.value['destination'] != null){ // Firebase返回的数组会自动映射为Dart的List类型,直接遍历即可 for(var destItem in snapshot.value['destination']){ double destLat = double.parse(destItem['latitude'].toString()); double destLng = double.parse(destItem['longitude'].toString()); String destAddress = destItem['address'].toString(); // 把取出的字段存入列表,也可以直接转换成你自定义的Destination类对象 destinationList.add({ 'latitude': destLat, 'longitude': destLng, 'address': destAddress }); } } // 后续直接使用destinationList即可 print('目的地列表长度:${destinationList.length}'); } });
注意事项
- 代码中
destination下的字段名(latitude/longitude/address)需要和你数据库中实际存储的字段名保持一致,如果不一致请自行修改 - 如果你的
destination节点是存放在其他路径下,调整rideRef的指向路径即可 - 建议增加空判断逻辑,避免部分节点不存在时抛出空异常
内容的提问来源于stack exchange,提问作者H Zan
相关产品推荐
相关产品推荐

