getOptimizeResultWithId static method

Future<OptimizeRouteResultResponse> getOptimizeResultWithId(
  1. String resultId, {
  2. int retry = 5,
  3. Options? requestOptions,
})

Retrieves the optimization route ID using request parameters.

optimizeRequest - The parameters for the optimization request. requestOptions - Optional request options for the HTTP request.

Implementation

static Future<OptimizeRouteResultResponse> getOptimizeResultWithId(
    String resultId,
    {int retry = 5,
    Options? requestOptions}) async {

  assert(_accessKey.isNotEmpty, "Access key is empty,Please initialize SDK.");

  String requestUrl = "$_baseUri/optimization/v2/result?key=$_accessKey&id=$resultId";
  int attempt = 0;
  while (attempt <= retry) {
    attempt++;
    await Future.delayed(const Duration(seconds: 2));
    try {
      var response =
          await ApiService().get(requestUrl, options: requestOptions);

      var optResult = OptimizeRouteResultResponse.fromJson(response.data);
      if (optResult.result != null &&
          optResult.result?.routes?.isNotEmpty == true) {
        optResult.status = response.statusCode.toString();
        return optResult;
      } else {
        if (attempt > retry) {
          return OptimizeRouteResultResponse(
              status: "1005",
              message: "Optimize route is empty, please retry.");
        }
      }
    } catch (error) {
      if (error is DioException) {
        var map = error.response?.data as Map?;
        String? statusCode = map?["status"]?.toString();
        String? message = map?["msg"] ?? map?["message"];
        return OptimizeRouteResultResponse(
            status: statusCode, message: message);
      }
      return OptimizeRouteResultResponse(
          status: "1001", message: "Failed to optimize route: $error");
    }
  }
  return OptimizeRouteResultResponse(
      status: "1002", message: "Unknown error after $retry attempts");
}