getAvailableOverlays static method

Pair<OverlayCollection, bool> getAvailableOverlays({
  1. void onCompleteDownload(
    1. GemError error
    )?,
})

Get a list of available SDK overlays.

Parameters

  • IN listener Progress listener. If not all overlays info is available onboard, a notification will be sent when it will be downloaded.

Returns

  • Pair <OverlayCollection, bool>. If pair.second == false, some overlay information is not available and will be downloaded when network is available.

Throws

  • An exception if it fails

Implementation

static Pair<OverlayCollection, bool> getAvailableOverlays({
  final void Function(GemError error)? onCompleteDownload,
}) {
  EventDrivenProgressListener? listener;
  if (onCompleteDownload != null) {
    listener = EventDrivenProgressListener();

    listener.registerOnCompleteWithDataCallback((
      final int err,
      final String hint,
      final Map<dynamic, dynamic> json,
    ) {
      GemKitPlatform.instance.unregisterEventHandler(listener!.id);
      onCompleteDownload(GemErrorExtension.fromCode(err));
    });

    GemKitPlatform.instance.registerEventHandler(listener.id, listener);
  }

  final OperationResult resultString = objectMethod(
    0,
    'OverlayService',
    'getAvailableOverlays',
    args: (listener != null) ? listener.id : 0,
  );

  final Pair<OverlayCollection, bool> result = Pair<OverlayCollection, bool>(
    OverlayCollection.init(resultString['result']['first']),
    resultString['result']['second'],
  );

  if (onCompleteDownload != null && result.second) {
    onCompleteDownload(GemError.success);
  }

  return result;
}