You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 04:54:04