TrafficParameters.fromParameters constructor
TrafficParameters.fromParameters(
- List<
GemParameter> params
Implementation
factory TrafficParameters.fromParameters(List<GemParameter> params) {
T? findValue<T>(String key) {
for (final GemParameter param in params) {
if (param.key == key) {
if (param.value is! T) {
return null;
}
return param.value as T?;
}
}
return null;
}
T findValueWithDefault<T>(String key, T defaultValue) {
final T? value = findValue<T>(key);
return value ?? defaultValue;
}
DateTime parseDateTimeString(String dateTimeString) {
if (dateTimeString.isEmpty) {
return DateTime.fromMillisecondsSinceEpoch(0, isUtc: true);
}
try {
return DateTime.parse(dateTimeString);
} catch (e) {
return DateTime.fromMillisecondsSinceEpoch(0, isUtc: true);
}
}
DateTime parseDateTimeInt(int timestamp) {
if (timestamp <= 0) {
return DateTime.fromMillisecondsSinceEpoch(0, isUtc: true);
}
return DateTime.fromMillisecondsSinceEpoch(timestamp, isUtc: true);
}
final dynamic startStampValue =
findValue<int>('start_stamp') ?? findValue<String>('start_stamp');
final dynamic endStampValue =
findValue<int>('end_stamp') ?? findValue<String>('end_stamp');
final DateTime startStamp = startStampValue is int
? parseDateTimeInt(startStampValue)
: parseDateTimeString(startStampValue as String? ?? '');
final DateTime endStamp = endStampValue is int
? parseDateTimeInt(endStampValue)
: parseDateTimeString(endStampValue as String? ?? '');
return TrafficParameters(
id: findValueWithDefault<String>('id', ''),
iconId: findValueWithDefault<int>('iconId', 0),
alertc: findValueWithDefault<int>('alertc', 0),
delay: findValueWithDefault<int>('delay', 0),
description: findValueWithDefault<String>('description', ''),
startStamp: startStamp,
endStamp: endStamp,
from: findValueWithDefault<String>('from', ''),
to: findValueWithDefault<String>('to', ''),
transportMode: RouteTransportModeExtension.fromId(
findValueWithDefault<int>('transportMode', 0),
),
);
}