Общие принципы | Mobile SDK | 2GIS Documentation
Flutter SDK

Общие принципы

Некоторые методы SDK (например те, которые обращаются к удалённому серверу) возвращают отложенные результаты Future или CancelableOperation в тех случаях, когда может быть важно отменить запрос. Для работы с ними нужно создать обработчик получения данных и обработчик ошибок.

Пример получения объекта из справочника:

import 'package:dgis_mobile_sdk/dgis.dart' as sdk;

// Создание объекта для поиска по справочнику
searchManager = sdk.SearchManager.createOnlineManager(context);

// Получение объекта из справочника по идентификатору
searchManager.searchByDirectoryObjectId(objectId)

Подробнее про работу со справочником можно посмотреть в разделе Справочник объектов.

Некоторые объекты SDK предоставляют потоки значений, которые можно обработать, используя механизм каналов: на поток можно подписаться, указав функцию-обработчик данных, и отписаться, когда обработка данных больше не требуется. Для работы с потоками значений используется интерфейс Channel.

Подписка на Channel возвращает StreamSubscription.

Пример подписки на изменение видимой области карты (поток новых прямоугольных областей):

import 'dart:async';

import 'package:dgis_mobile_sdk/dgis.dart' as sdk;

class SampleState extends State<Widget> {
  final mapWidgetController = sdk.MapWidgetController();
  late final StreamSubscription<sdk.GeoRect> visibleRectSubscription;

  @override
  void initState() {
    super.initState();
     mapWidgetController.getMapAsync((map) {
        visibleRectSubscription = map.camera.visibleRectChannel.listen((geoRect) {
          debugPrint("Current rect: ${geoRect}")
        });
      });
  }

  @override
  void dispose() {
    visibleRectSubscription.cancel();
    super.dispose();
  }
...
}