getPreviewExtendedData method
ProgressListener?
getPreviewExtendedData(
- void onComplete(
- GemError error,
- SearchableParameterList? parameters
- PTStopScheduleFilter? filter,
Asynchronously retrieve the preview extended data for this item.
The operation is asynchronous and delivers results via the provided callback.
Parameters
onComplete: Callback invoked with a GemError and a SearchableParameterList when available.
Parameters
onComplete: Function called when the operation is completed. The function is called with:- GemError.success for
errorand non-nullparameterson success. - GemError.invalidInput for
errorand nullparametersif no listener was provided or the providedfilteris inconsistent (negative time; empty string entry in lineNames / headings; headings non-empty while lineNames is empty) - validated client-side, no request is sent. - GemError.couldNotStart for
errorand nullparametersif the request couldn't be started. - GemError.notSupported for
errorand nullparametersif called even though hasPreviewExtendedData returned false. - GemError.general for
errorand nullparametersin any other error case. - Other error codes for
errorand nullparametersif an error occurred.
- GemError.success for
filter: Optional departures filter (public transport items only). Narrows only the trips (departures) section of the preview extended data - the stops[].routes[] line catalogue is always returned complete. An empty / omitted filter produces the legacy, unfiltered request. See PTStopScheduleFilter.
Returns
- A ProgressListener that can be used to monitor or cancel the operation.
See also:
- hasPreviewExtendedData - Property to check if extended data is available for this item.
- cancelGetPreviewExtendedData - Method to cancel a running preview extended data request.
Implementation
ProgressListener? getPreviewExtendedData(
void Function(GemError error, SearchableParameterList? parameters)
onComplete, {
PTStopScheduleFilter? filter,
}) {
final EventDrivenProgressListener progListener =
EventDrivenProgressListener();
GemKitPlatform.instance.registerEventHandler(progListener.id, progListener);
final SearchableParameterList params = SearchableParameterList();
progListener.registerOnCompleteWithData((
int err,
String hint,
Map<dynamic, dynamic> json,
) {
GemKitPlatform.instance.unregisterEventHandler(progListener.id);
if (err != 0) {
onComplete(GemErrorExtension.fromCode(err), null);
} else {
onComplete(GemErrorExtension.fromCode(err), params);
}
});
// An omitted or empty filter routes to the legacy call path - both produce identical requests.
final bool useFilter = filter != null && !filter.isEmpty;
final OperationResult resultString = objectMethod(
pointerId,
'OverlayItem',
useFilter ? 'getPreviewExtendedDataFiltered' : 'getPreviewExtendedData',
args: <String, dynamic>{
'list': params.pointerId,
'listener': progListener.id,
if (useFilter) ...filter.toJson(),
},
);
final int id = resultString['result'];
if (id != 0) {
GemKitPlatform.instance.unregisterEventHandler(progListener.id);
onComplete(GemErrorExtension.fromCode(id), null);
return null;
}
return progListener;
}