首先对英语的混乱感到抱歉,因为它不是我的母语。
所以我正在尝试构建一个在 flutter 中使用来自 google 的地图 api 的汽车租赁应用程序,我基本上有一个按钮来获取当前位置,在获取该位置后我想弹出屏幕并将保存的数据返回到父屏幕如下所示
子屏幕
void savePlace(double lat, double lng) async {
final url = Uri.parse(
'https://maps.googleapis.com/maps/api/geocode/json?latlng=$lat,$lng&key=myapikey');
final response = await http.get(url);
final resData = json.decode(response.body);
final address = resData['results'][0]["formatted_address"];
pickedLocation = PickupLocation(
latitude: lat,
longitude: lng,
address: address,
);
isGettingLocation = false;
print("this first");
print(pickedLocation);
if (pickedLocation == null) {
return;
}
}
执行上面的代码后,我使用 flutter 中的 navigator pop 函数弹出pickedLocation数据,因此我打印“this first”的部分应该在弹出屏幕之前运行,因为我将它放在弹出屏幕之前,但是在父屏幕中首先运行其他代码
家长屏幕
void locationData() async {
final selectedLocation = await Navigator.of(context).push(MaterialPageRoute(
builder: (ctx) => ParentScreen(),
));
setState(() {
pickedLocation = selectedLocation;
});
print("should be second");
print(pickedLocation);
}
下面是调试控制台给出的输出
I/flutter ( 7909): should be second
I/flutter ( 7909): null
I/flutter ( 7909): this first
I/flutter ( 7909): Instance of 'PickupLocation'
pickedLocation 变为 null,因为它先运行而不是等待给出 selectedlocation 数据
如果您需要额外信息请告诉我
我已经解决了问题,我只需运行
flutter clean
并重建应用程序,问题就解决了