startTrip static method

Future<void> startTrip(
  1. RoamTripCallback roamTripCallback,
  2. ErrorCallback errorCallback, {
  3. String? tripId,
  4. RoamTrip? roamTrip,
  5. RoamTrackingMode? roamTrackingMode,
})

Implementation

static Future<void> startTrip(RoamTripCallback roamTripCallback,
    ErrorCallback errorCallback,
    {
      String? tripId,
      RoamTrip? roamTrip,
      RoamTrackingMode? roamTrackingMode,
    }) async {
  if (roamTrip != null) {
    //start quick trip

    if (roamTrackingMode == null) {
      roamTrackingMode = RoamTrackingMode.ACTIVE;
    }

    Map<String, dynamic> json = Map();

    Map<String, dynamic> roamTripJson = JsonEncoder.encodeRoamTrip(roamTrip);
    json['roamTrip'] = jsonEncode(roamTripJson);

    json['roamTrackingMode'] =
        jsonEncode(JsonEncoder.encodeRoamTrackingMode(roamTrackingMode));

    final String? result = await _channel.invokeMethod(
        METHOD_START_QUICK_TRIP, json);

    if (result == null) {
      log("Update trip result null!");
      return;
    }

    try {
      Map json = jsonDecode(result);
      if (json.containsKey("error")) {
        errorCallback(error: JsonDecoder.decodeError(json['error']));
      } else {
        roamTripCallback(
            roamTripResponse: JsonDecoder.decodeRoamTripResponse(json));
      }
    } catch (exception) {
      log(exception.toString());
    }
  } else {
    //start planned trip

    final String? result = await _channel.invokeMethod(
        METHOD_START_TRIP, {'tripId': tripId ?? ''});

    if (result == null) {
      log("Start trip result null!");
      return;
    }

    print(result);

    try {
      Map json = jsonDecode(result);
      if (json.containsKey("error")) {
        errorCallback(error: JsonDecoder.decodeError(json['error']));
      } else {
        roamTripCallback(
            roamTripResponse: JsonDecoder.decodeRoamTripResponse(json));
      }
    } catch (exception) {
      log(exception.toString());
    }
  }
}