Flutter GetX Get.find() 第一次只返回 null

Flutter GetX Get.find() returning null only at the first time

我正在关注 YouTube 上的 uber_clone 项目。教程和我的区别在于我使用的是 GetX。当我使用来自其他控制器的数据时,我第一次遇到空值的问题。

dropOffLocation 从 SeachController 获取数据,我试图将 dropOff 数据保存到 firebase,但是当我第一次保存 dropOff 数据时它是空的,所以在 firebase 数据库中存储 logitude 和空数据dropOff 的纬度,但在我按下执行 cancelRideRequest' method, and then, search destination, and then press request button that execute saveRideRequest` 的取消按钮后,我终于可以将 dropoff 数据存储在 firebase 数据库中。

为什么会这样,我该如何解决?

// HomeController
  void saveRideRequest() {
    Rx<Address> dropOffLocation = SearchController.to.dropOffLocation;

    rideRequestRef =
        FirebaseDatabase.instance.reference().child("Ride Requests").push();

    var pickUp = pickUpLocation.value;
    var dropOff = dropOffLocation.value;
    print(dropOff.longitude);

    Map pickUpLocMap = {
      "latitude": pickUp.latitude.toString(),
      "logitude": pickUp.longitude.toString(),
    };

    Map dropOffLocMap = {
      "latitude": dropOff.latitude.toString(),
      "logitude": dropOff.longitude.toString(),
    };

    Map rideInfoMap = {
      "driver_id": "waiting",
      "payment_method": "cash",
      "pickup": pickUpLocMap,
      "dropoff": dropOffLocMap,
      "created_at": DateTime.now().toString(),
      "rider_name": userCurrentInfo!.name,
      "rider_phone": userCurrentInfo!.phone,
      "pickup_address": pickUp.placeName,
      "dropoff_address": dropOff.placeName,
    };

    rideRequestRef!.set(rideInfoMap);
  }


// ...
// ...

 void cancelRideRequest() {
    rideRequestRef!.remove();
  }

是的,在创建 controllerinstance 之前,您会收到此错误,基本上原因是 Get.find() 找到如果你的 controller 不是 initialized,那么你的 project tree 中已经 initiated controller 的实例将只是 return 一个空值。因此,在使用 Get.find() 之前,您必须使用 Get.put(YOUR_CONTROLLER); 那么你可以自由使用 Get.find().