Общие принципы
Отложенные результаты
Некоторые методы 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();
}
...
}