feat:参照研听的基础工程
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import 'package:dio/dio.dart';
|
||||
import 'package:fancy_dio_inspector/fancy_dio_inspector.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
|
||||
import '../config/app_config.dart';
|
||||
import 'auth_interceptor.dart';
|
||||
import 'kratos_error_interceptor.dart';
|
||||
|
||||
part 'dio_provider.g.dart';
|
||||
|
||||
const _protobufContentType = 'application/x-protobuf';
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
AppConfig appConfig(Ref ref) => AppConfig.fromEnvironment();
|
||||
|
||||
@Riverpod(keepAlive: true)
|
||||
Dio dio(Ref ref) {
|
||||
final config = ref.watch(appConfigProvider);
|
||||
final d = Dio(
|
||||
BaseOptions(
|
||||
baseUrl: config.apiBaseUrl,
|
||||
connectTimeout: const Duration(seconds: 15),
|
||||
receiveTimeout: const Duration(seconds: 30),
|
||||
responseType: ResponseType.bytes,
|
||||
contentType: _protobufContentType,
|
||||
headers: const {
|
||||
'Accept': _protobufContentType,
|
||||
'Content-Type': _protobufContentType,
|
||||
},
|
||||
),
|
||||
);
|
||||
d.interceptors.add(AuthInterceptor());
|
||||
d.interceptors.add(KratosErrorInterceptor());
|
||||
if (!kReleaseMode) {
|
||||
d.interceptors.add(LogInterceptor(requestBody: false, responseBody: false));
|
||||
}
|
||||
d.interceptors.add(FancyDioInterceptor());
|
||||
return d;
|
||||
}
|
||||
Reference in New Issue
Block a user