32 lines
871 B
Dart
32 lines
871 B
Dart
import 'package:dio/dio.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
|
|
import 'api_config.dart';
|
|
import 'token_storage.dart';
|
|
|
|
final tokenStorageProvider = Provider<TokenStorage>((ref) => TokenStorage());
|
|
|
|
final dioProvider = Provider<Dio>((ref) {
|
|
final storage = ref.watch(tokenStorageProvider);
|
|
final dio = Dio(
|
|
BaseOptions(
|
|
baseUrl: ApiConfig.baseUrl,
|
|
connectTimeout: const Duration(seconds: 15),
|
|
receiveTimeout: const Duration(seconds: 30),
|
|
headers: {'Content-Type': 'application/json'},
|
|
),
|
|
);
|
|
dio.interceptors.add(
|
|
InterceptorsWrapper(
|
|
onRequest: (options, handler) async {
|
|
final t = await storage.readToken();
|
|
if (t != null && t.isNotEmpty) {
|
|
options.headers['Authorization'] = 'Bearer $t';
|
|
}
|
|
handler.next(options);
|
|
},
|
|
),
|
|
);
|
|
return dio;
|
|
});
|