mergeOptions static method

Options mergeOptions(
  1. Options? connector,
  2. Options? request,
  3. String method,
  4. Map<String, String>? mergedHeaders,
)

Merges connector and request Dio Options into a single Options object ready to pass to Dio.

The method is always taken from the request. For every other field, the request value is preferred over the connector value. The mergedHeaders argument (already merged by mergeHeaders) is layered on top of any headers in both Options objects. The extra maps are shallow-merged with the same priority rule.

Implementation

static Options mergeOptions(
  Options? connector,
  Options? request,
  String method,
  Map<String, String>? mergedHeaders,
) {
  final base = connector ?? Options();
  final req = request ?? Options();

  return Options(
    method: method,
    headers: {
      ...?base.headers,
      ...?req.headers,
      ...?mergedHeaders,
    },
    contentType: req.contentType ?? base.contentType,
    responseType: req.responseType ?? base.responseType,
    validateStatus: req.validateStatus ?? base.validateStatus,
    receiveTimeout: req.receiveTimeout ?? base.receiveTimeout,
    sendTimeout: req.sendTimeout ?? base.sendTimeout,
    followRedirects: req.followRedirects ?? base.followRedirects ?? true,
    maxRedirects: req.maxRedirects ?? base.maxRedirects ?? 5,
    persistentConnection:
        req.persistentConnection ?? base.persistentConnection ?? true,
    extra: {
      ...?base.extra,
      ...?req.extra,
    },
  );
}