instance static method

Dio instance(
  1. PreferencesService preferences, {
  2. bool disableStatusesErrors = false,
  3. Duration? connectTimeout = const Duration(seconds: 30),
  4. Duration? sendTimeout = const Duration(seconds: 50),
  5. Duration? receiveTimeout,
  6. String? baseUrl,
})

returns a new Dio instance configured with some basic features

Implementation

static Dio instance(
  PreferencesService preferences,
  {
    /// if this is set to true, then all status errors will lead to a success
    /// in the Future execution. By default, only statuses between 200 and 300
    /// are considered as success.
    /// See. https://github.com/cfug/dio/blob/87e6b1d4c8f9d3c57dd2291f540b730b510f4b20/dio/lib/src/options.dart#L633
    bool disableStatusesErrors = false,
    Duration? connectTimeout = const Duration(seconds: 30),
    Duration? sendTimeout = const Duration(seconds: 50),
    Duration? receiveTimeout,
    /// use this to override the default server link obtained from [Links]
    String? baseUrl
  }
) {
  log('running on: ${baseUrl ?? Links.instance.server}');

  final dio = Dio()
    ..options.baseUrl = baseUrl?? Links.instance.server
    ..options.connectTimeout = connectTimeout
    ..options.sendTimeout = sendTimeout
    ..options.receiveTimeout = receiveTimeout
    ..options.headers['Accept'] = 'application/json'
    ..interceptors.add(_AuthorizationInterceptor(preferences))
    ..interceptors.add(const _LogInterceptor());

  if (disableStatusesErrors) {
    dio.options.validateStatus = (_) => true;
  }

  return dio;
}