RoutePreferences.fromJson constructor

RoutePreferences.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory RoutePreferences.fromJson(final Map<String, dynamic> json) {
  final int routeTypePreferencesInt = json['routetypepreferences'];
  final Set<RouteTypePreferences> routeTypePreferences =
      <RouteTypePreferences>{};

  for (final RouteTypePreferences value in RouteTypePreferences.values) {
    if (routeTypePreferencesInt & value.id != 0) {
      routeTypePreferences.add(value);
    }
  }
  if (routeTypePreferences.isEmpty) {
    routeTypePreferences.add(RouteTypePreferences.none);
  }

  return RoutePreferences(
    accurateTrackMatch: json['accuratetrackmatch'],
    algorithmType: PTAlgorithmTypeExtension.fromId(json['algorithmtype']),
    allowOnlineCalculation: json['allowonlinecalculation'],
    alternativeRoutesBalancedSorting:
        json['alternativeroutesbalancedsorting'],
    alternativesSchema: RouteAlternativesSchemaExtension.fromId(
      json['alternativesschema'],
    ),
    automaticTimestamp: json['automatictimestamp'],
    avoidBikingHillFactor: json['avoidbikinghillFactor'],
    avoidCarpoolLanes: json['avoidcarpoollanes'],
    avoidFerries: json['avoidferries'],
    avoidMotorways: json['avoidmotorways'],
    avoidTollRoads: json['avoidtollroads'],
    avoidTraffic: TrafficAvoidanceExtension.fromId(json['avoidtraffic']),
    avoidTurnAroundInstruction: json['avoidturnaroundinstruction'],
    avoidUnpavedRoads: json['avoidunpavedroads'],
    bikeProfile: BikeProfileElectricBikeProfile.fromJson(json['bikeprofile']),
    buildConnections: json['buildconnections'],
    buildTerrainProfile: BuildTerrainProfile.fromJson(
      json['buildterrainprofile'],
    ),
    carProfile: CarProfile.fromJson(json['carprofile']),
    departureHeading: DepartureHeading.fromJson(json['departureheading']),
    emergencyVehicleExtraFreedomLevels: json['emergencyVehicleMode']
        ['extraFreedom'],
    emergencyVehicleMode: json['emergencyVehicleMode']['enable'],
    evProfile: EVProfile.fromJson(json['evprofile']),
    ignoreRestrictionsOverTrack: json['ignorerestrictionsovertrack'],
    maximumDistanceConstraint: json['maximumdistanceconstraint'],
    maximumTransferTimeInMinutes: json['maximumtransfertimeInminutes'],
    maximumWalkDistance: json['maximumwalkdistance'],
    minimumTransferTimeInMinutes: json['minimumtransfertimeInminutes'],
    pathAlgorithm: RoutePathAlgorithmExtension.fromId(json['pathalgorithm']),
    pathAlgorithmFlavor: RoutePathAlgorithmFlavorExtension.fromId(
      json['pathalgorithmflavor'],
    ),
    pedestrianProfile: PedestrianProfileExtension.fromId(
      json['pedestrianprofile'],
    ),
    resultDetails: RouteResultDetailsExtension.fromId(json['resultdetails']),
    routeGroupIdsEarlierLater:
        (json['routegroupidsearlierlater'] as List<dynamic>)
            .map((final dynamic item) => item as int)
            .toList(),
    routeRanges: (json['routeranges']['list'] as List<dynamic>)
        .map((final dynamic item) => item as int)
        .toList(),
    routeRangesQuality: json['routeranges']['quality'],
    routeResultType: RouteResultTypeExtension.fromId(json['routeresulttype']),
    routeType: RouteTypeExtension.fromId(json['routetype']),
    routeTypePreferences: routeTypePreferences,
    sortingStrategy: PTSortingStrategyExtension.fromId(json['routetype']),
    timestamp: json['timestamp'] == null
        ? null
        : DateTime.fromMillisecondsSinceEpoch(
            json['timestamp'],
            isUtc: true,
          ),
    transportMode: RouteTransportModeExtension.fromId(json['transportmode']),
    truckProfile: TruckProfile.fromJson(json['truckprofile']),
    useBikes: json['usebikes'],
    useWheelchair: json['usewheelchair'],
  );
}