我想传递给目的地和坐标的列表。我必须把它们分开,因为我必须先抓取数据,然后再对它们进行地理编码。下面是我的代码:
Future<void> getCoordinates()async{
for(int i=1 ; i < destination.length ; i++){
coordinates = await locationFromAddress('${destination.elementAt(i).destination}');
location.add(coordinates);
print('$i $location');
}
}
这里有一个片段去从我的第一个屏幕到第二个屏幕:
return GestureDetector(
onTap: (){
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => PlaceInfo(packageModel: destination[index], location: location[index])),
);
},
下面是我的第二个屏幕的片段:
final PackageModel packageModel;
final Location location;
PlaceInfo({Key? key,required this.location, required this.packageModel,}):super(key:key);
@override
State<PlaceInfo> createState() => _PlaceInfoState();
}
class _PlaceInfoState extends State<PlaceInfo> {
//late double _latitude = 2.8025;
//late double _longitude = 101.7989;
late double _latitude = widget.location.latitude;
late double _longitude = widget.location.longitude;
当我这样做时,它会在应用程序中显示红色错误,即
type 'List<Location>' is not a subtype of type 'Location'
有人能帮帮忙吗
2条答案
按热度按时间2lpgd9681#
可能是根据您的错误,在我看来,一个潜在的解决方案是,当您将参数传递到下一个屏幕时,您需要更改参数的类型,如下所示
您只需要在位置[index]后添加作为位置
另一个解决方案是可以将List位置变量声明为
d6kp6zgx2#
错误在于:
location.add(coordinates);
.coordinates
本身似乎是List
,而您正尝试将其作为元素添加。尝试首先从
coordinates
创建一个Location
0bject,然后将该对象添加到列表location
中。希望能有所帮助!