set method

Future<StaticPositionId> set(
  1. List<GeoPoint> positions, {
  2. StaticPositionId? groupId,
  3. Uint8List? iconBytes,
})

Creates or replaces a static-position group in one native command.

Implementation

Future<StaticPositionId> set(
  List<GeoPoint> positions, {
  StaticPositionId? groupId,
  Uint8List? iconBytes,
}) async {
  if (positions.isEmpty) {
    throw _argumentException(
      _controller,
      'setStaticPositions',
      'empty_positions',
    );
  }
  if (iconBytes?.isEmpty ?? false) {
    throw _argumentException(_controller, 'setStaticPositions', 'empty_icon');
  }
  final id = groupId ?? _controller._nextStaticPositionId();
  final wasIssued = _issuedIds.contains(id);
  _issuedIds.add(id);
  try {
    final transport = await _controller._readyTransport();
    await transport.setStaticPositions(
      id,
      List<GeoPoint>.unmodifiable(positions),
      iconBytes: iconBytes,
    );
    return id;
  } catch (_) {
    if (!wasIssued) _issuedIds.remove(id);
    rethrow;
  }
}