我在Flutter中开发了一个使用谷歌Map的应用程序。现在我通过调用'rh.populateStations()'获取坐标数组,在googleMap上显示标记。现在我还必须通过请求用户的许可来获取用户的位置,然后将其添加到上面的数组中,然后调用'fillMarkers'函数来显示所有这些位置上的标记。代码如下:
Future<Position> getUserCurrentLocation() async {
try {
await Geolocator.requestPermission();
} catch (e) {
print("Error occurred while requesting permission");
}
Position position = await Geolocator.getCurrentPosition();
return position;
}
Future<void> loadData() async {
await rh.populateStations();
locationsToDisplay.addAll(rh.stations);
Position position = await getUserCurrentLocation();
print("Current location obtained: $position");
userLoc = StopLocation(LatLng(position.latitude, position.longitude), 'My StopLocation', false, false, false, true);
start = userLoc;
start?.isStartingPoint = true;
locationsToDisplay.insert(0, userLoc!);
setState(() {
fillMarkers();
});
}
@override
void initState() {
super.initState();
loadData();
// loadData().then((_) {
// setState(() {
// fillMarkers();
// });
// });
}
现在的问题是,我认为由于同步问题时,系统要求的权限,它显示在屏幕上的错误'RangeError(开始):无效值:只有有效值为0:1参见:https://flutter.dev/docs/testing/errors'。给予许可后,红色屏幕消失,标记显示。现在我想摆脱这个红色的屏幕,这是在请求许可时出现的。
我认为问题是fillmarks函数在没有获取数据时被调用,所以这就是为什么它给出错误(可能是我错了)。所以请帮我解决这个问题。
1条答案
按热度按时间vdgimpew1#
通过这样做,你可以避免,如果任何部件试图访问数组之前,它是初始化