dioClient static method

String dioClient({
  1. String? name,
  2. String? configImport,
})

The Dio HTTP client provider.

When configImport is provided (flavors enabled), the base URL is driven by AppConfig.current.apiBaseUrl; name must also be supplied so the config can be imported. When configImport is null the output is byte-for-byte identical to the single-flavor form.

Implementation

static String dioClient({String? name, String? configImport}) {
  if (configImport != null) {
    return '''
import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:$name/$configImport';

final dioProvider = Provider<Dio>((ref) {
final dio = Dio(
  BaseOptions(
    baseUrl: AppConfig.current.apiBaseUrl,
    connectTimeout: const Duration(seconds: 10),
    receiveTimeout: const Duration(seconds: 10),
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
  ),
);
dio.interceptors.add(LogInterceptor(responseBody: true));
return dio;
});
''';
  }
  return '''
import 'package:dio/dio.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

final dioProvider = Provider<Dio>((ref) {
final dio = Dio(
  BaseOptions(
    baseUrl: 'https://api.example.com',
    connectTimeout: const Duration(seconds: 10),
    receiveTimeout: const Duration(seconds: 10),
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
    },
  ),
);
dio.interceptors.add(LogInterceptor(responseBody: true));
return dio;
});
''';
}