getPreviewData method

ProgressListener? getPreviewData(
  1. void onResult(
    1. GemError error,
    2. TrafficParameters? data
    )
)

Asynchronously retrieve traffic preview data for the event.

The preview data contains a list of TrafficParameters with additional metadata useful for UI and diagnostics.

Parameters

Returns

  • ProgressListener?: listener that can be used to cancel the operation, or null when the operation could not be started.

Example

event.getPreviewData(
  (GemError error, TrafficParameters? data) {
    if (error == GemError.success && data != null) {
      print('Preview id: ${data.id}');
      print('Description: ${data.description}');
      print('Delay (s): ${data.delay}');
    } else {
      print('Failed to get preview data: $error');
    }
  },
);

Also see:

Implementation

//       // Handle error cases (not supported, network issues, not found, ...)
///       print('Failed to get preview data: $error');
///     }
///   },
/// );
/// ```
///
/// ## Also see:
///
/// - [TrafficParameters] - Class representing traffic preview data.
/// - [cancelGetPreviewData] - Cancel an active preview data request.
ProgressListener? getPreviewData(
  void Function(GemError error, TrafficParameters? data) onResult,
) {
  final EventDrivenProgressListener listener = EventDrivenProgressListener();
  GemKitPlatform.instance.registerEventHandler(listener.id, listener);
  final SearchableParameterList parameterList = SearchableParameterList();

  listener.registerOnCompleteWithData((int code, _, _) {
    final GemError error = GemErrorExtension.fromCode(code);
    GemKitPlatform.instance.unregisterEventHandler(listener.id);
    if (error != GemError.success) {
      onResult(error, null);
    } else {
      final TrafficParameters trafficParams =
          TrafficParameters.fromParameters(parameterList.toList());
      onResult(error, trafficParams);
    }
  });

  final OperationResult resultString = objectMethod(
    pointerId,
    'TrafficEvent',
    'getPreviewData',
    args: <String, dynamic>{
      'first': parameterList.pointerId,
      'second': listener.id,
    },
  );

  if (resultString['result'] != 0) {
    GemKitPlatform.instance.unregisterEventHandler(listener.id);
    onResult(GemErrorExtension.fromCode(resultString['result']), null);
    return null;
  }

  return listener;
}