问题描述
我仍在尝试使用我的出租车应用程序。我应该在何处搜索下车地点,但每次用户搜索一个地点并使用 Google 自动完成点击它时,它不断出现此错误:
[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: 'package:google_maps_flutter_platform_interface/src/types/location.dart': Failed assertion: line 35 pos 18: 'longitude != null': is not true.
我曾尝试使用 FutureBuilder 小部件,因为该应用程序依赖于等待另一个无效的操作完成。应用程序仍然崩溃,因此其他方法没有执行。 这是错误指向的方法:
Future<void> getPlaceDirection() async
{
var initialPos = Provider.of<AppData>(context,listen: false).pickUpLocation;
var finalPos = Provider.of<AppData>(context,listen: false).dropOffLocation;
var pickUpLatLng = LatLng(initialPos.latitude,initialPos.longitude);
var dropOffLatLng = LatLng(finalPos.latitude,finalPos.longitude);
showDialog(
context: context,builder: (BuildContext content) => ProgressDialog(message: "Please wait...",)
);
var details = await AssistantMethods.obtainPlaceDirectionDetails(pickUpLatLng,dropOffLatLng);
setState(() {
tripDirectionDetails = details;
});
Navigator.pop(context);
print("This is encoded points :");
print(details.encodedPoints);
PolylinePoints polylinePoints = PolylinePoints();
List<PointLatLng> decodedPolyLinePointsResult = polylinePoints.decodePolyline(details.encodedPoints);
pLineCoordinates.clear();
if (decodedPolyLinePointsResult.isNotEmpty)
{
decodedPolyLinePointsResult.forEach((PointLatLng pointLatLng)
{
pLineCoordinates.add(LatLng(pointLatLng.latitude,pointLatLng.longitude));
});
}
polylineSet.clear();
setState(() {
Polyline polyline = Polyline(
color: orange,polylineId: PolylineId("PolylineID"),jointType: JointType.round,points: pLineCoordinates,width: 5,startCap: Cap.roundCap,endCap: Cap.roundCap,geodesic: true,);
polylineSet.add(polyline);
});
LatLngBounds latLngBounds;
if(pickUpLatLng.latitude > dropOffLatLng.latitude && pickUpLatLng.longitude > dropOffLatLng.longitude)
{
latLngBounds = LatLngBounds(southwest: dropOffLatLng,northeast: pickUpLatLng);
}
else if(pickUpLatLng.longitude> dropOffLatLng.longitude)
{
latLngBounds = LatLngBounds(southwest: LatLng(pickUpLatLng.latitude,dropOffLatLng.longitude),northeast: LatLng(dropOffLatLng.latitude,pickUpLatLng.longitude));
}
else if(pickUpLatLng.latitude > dropOffLatLng.latitude)
{
latLngBounds = LatLngBounds(southwest: LatLng(dropOffLatLng.latitude,pickUpLatLng.longitude),northeast: LatLng(pickUpLatLng.latitude,dropOffLatLng.longitude));
}
else
{
latLngBounds = LatLngBounds(southwest: pickUpLatLng,northeast: dropOffLatLng);
}
newGoogleMapController.animateCamera(CameraUpdate.newLatLngBounds(latLngBounds,70));
Marker pickUpLocMarker = Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueBlue),infoWindow: InfoWindow(title: initialPos.placeName,snippet: "My location"),position: pickUpLatLng,markerId: MarkerId("pickUpId"),);
Marker dropOffLocMarker = Marker(
icon: BitmapDescriptor.defaultMarkerWithHue(BitmapDescriptor.hueRed),infoWindow: InfoWindow(title: finalPos.placeName,snippet: "Drop-off location"),position: dropOffLatLng,markerId: MarkerId("dropOffId"),);
setState(() {
markerSet.add(pickUpLocMarker);
markerSet.add(dropOffLocMarker);
});
Circle pickUpLocCircle = Circle(
fillColor: Colors.blue,center: pickUpLatLng,radius: 12,strokeWidth: 4,strokeColor: Colors.blueAccent,circleId: CircleId("pickUpId")
);
Circle dropOffLocCircle = Circle(
fillColor: Colors.red,center: dropOffLatLng,strokeColor: Colors.redAccent,circleId: CircleId("dropOffId"),);
setState(() {
circleSet.add(pickUpLocCircle);
circleSet.add(dropOffLocCircle);
});
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)