当前位置: 首页 > 知识库问答 >
问题:

如何从firebase实时数据库检索数据

有玄天
2023-03-14

firebase数据库最近的更新似乎有一些变化。我的项目在firebase\u数据库:^7.0.0版本下运行良好,但在firebase数据库的更新版本中,我无法更新项目代码。

以下是v7的工作版本

class _MainScreenState extends State<MainScreen> {
//
 DatabaseReference driversRef =
      FirebaseDatabase(databaseURL: firebaseUrl).reference().child("Drivers");

//
void searchNearestDriver() {
    print("xxx searchNearestDriver");
    if (availableDrivers.length == 0) {
      cancelRideRequest();
      clear();
      noDriverFound();
      return;
    }
    var driver = availableDrivers[0];
    driversRef
        .child(driver.key!)
        .child('car_details')
        .child("type")
        .once()
        .then((DataSnapshot snap) async { //error from here
      if (await snap.value != null) {
        String carType = snap.value.toString();
        if (carType == carRideType) {
          notifyDriver(driver);
          //print("NotifyDriver is running");
          //TODO This removes the driver from geofire aswell re code

          //availableDrivers.removeAt(0);
        } else {
          Fluttertoast.showToast(msg: carRideType + "Driver not available");
        }
      }
    });
  }

firebase\u数据库^9.0.12上的同一代码出现错误。我收到的错误在`(DataSnapShot snap)async{…}上错误是

无法将参数类型“Future Function(DataSnapshot)”分配给参数类型“FutureOr”

共有1个答案

晏永康
2023-03-14

once方法返回数据库事件,而不是更新版本中的DataSnapshot,我猜这是更新。

void searchNearestDriver() async {
    print("xxx searchNearestDriver");
    if (availableDrivers.length == 0) {
      cancelRideRequest();
      clear();
      noDriverFound();
      return;
    }
    var driver = availableDrivers[0];
    //driversRef.child(driver.key!).child('car_details').child("type");
    // .once();

    DatabaseEvent event = await driversRef
        .child(driver.key!)
        .child('car_details')
        .child("type")
        .once();

    //.then((DataSnapshot snap) async {
    if (event.snapshot.value != null) {
      String carType = event.snapshot.value.toString();
      if (carType == carRideType) {
        notifyDriver(driver);
       
        //availableDrivers.removeAt(0);
      } else {
        Fluttertoast.showToast(msg: carRideType + "Driver not available");
      }
    }
  } //);
 类似资料:
  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?

  • 我是Android开发的新手,我正在从firebase Realtime数据库中检索所有的子节点,这些节点的约会状态为“已完成”,并且子节点具有当前用户id,但当我移到历史记录时,它没有显示任何内容。有人能帮我解决这个问题吗。我需要尽快解决问题。 Firebase数据库模型

  • 我试图创建一个简单的程序,从用户的名字,手机号码和电子邮件地址,然后把数据在Firebase实时数据库。 有3个输入框和一个按钮,按一下就可以完成上面的操作。代码如下: 我这样设置了消防基地:

  • 问题内容: 我目前正在学习Firebase和iOS的知识,因此请耐心等待。我当前正在发布到我的表,如下所示: 我正在尝试检索插入新记录时创建的内容,但是无法检索它。我已经尝试过( 但是由于浏览网页而无法找到一个可靠的解决方案,所以这是一个随机的猜测 )。有任何想法吗? 问题答案: 注意 :-Althogh 是自以来的一项强大功能,但是当您想创建具有唯一键的节点时更喜欢将数据存储到其中。我之所以喜欢

  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?