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