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"],
          ),
        );
      }
    });
  }
}

На данный момент застрял и не понимаю, как вывести все движущиеся автобусы на карту.


Ответы (0 шт):