The getter 'point' was called on null. Receiver: null Tried calling: point. Нужна помощь
Я пишу приложение для отслеживания движения публичного транспорта. Как я понял для такого вида работы нужно использовать пакет, который на фоне имеет доступ к объектам в реальном времени двигаются по карте. (До этого использовал, точнее пытался использовать пакеты location и geolocator, но они показывают только мое местоположение, а мне нужно, чтобы он связывался с движущимся транспортом). У меня уже имеется АПИ, в котором есть уже все необходимое: широта, долгота, скорость, айдишник машины. Но либо я валенок, либо сам ГЛОНАСС, установленный внутри автобуса не позволяет мне доступиться до него, потому что какие бы я танцы с бубнами не проводил вокруг того, чтобы вывести все двигающиеся машины на карту в реальном времени, то ничего не выходит. На данный момент работаю с бесплатным пакетом background_location package, также работаю на flutter_map, они же OSM.
Сейчас код вот такой:
body: FlutterMap(
options: MapOptions(
center: latLng.LatLng(48.707103, 44.516939),
zoom: 15.0,
interactive: true,
),
layers: [
TileLayerOptions(
urlTemplate:
"https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",
subdomains: ['a', 'b', 'c']),
MarkerLayerOptions(markers: [
BackgroundLocation.getLocationUpdates((location) {
setState(() {
Marker(
point:
latLng.LatLng(location.uLat, location.uLong),
width: 2.0,
height: 2.0,
builder: (ctx) => IconButton(
icon: Icon(Icons.directions_train_outlined),
onPressed: () {})); });
})
]),
],
сам класс BackgroundLocation и его код
/// Get the current location once.
Future<Location> getCurrentLocation() async {
Completer<Location> completer = Completer();
Location _location = Location();
await getLocationUpdates((location) {
_location.latitude = location.uLong;
_location.longitude = location.uLat;
_location.speed = location.uSpeed.toDouble();
_location.time = location.uTimenav as double;
completer.complete(_location);
});
return completer.future;
}
/// Register a function to recive location updates as long as the location
/// service has started
static getLocationUpdates(Function(LocVeh) location) {
// add a handler on the channel to recive updates from the native classes
_channel.setMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == "location") {
Map locationData = Map.from(methodCall.arguments);
// Call the user passed function
location(
LocVeh(
uLat: locationData["latitude"],
uLong: locationData["longitude"],
uSpeed: locationData["speed"],
uTimenav: locationData["time"],
),
);
}
});
}
}
На данный момент застрял и не понимаю, как вывести все движущиеся автобусы на карту.