diff --git a/lib/providers/collection_providers.dart b/lib/providers/collection_providers.dart index 75e9d7c5..10545f3a 100644 --- a/lib/providers/collection_providers.dart +++ b/lib/providers/collection_providers.dart @@ -1,11 +1,12 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'settings_providers.dart'; -import 'ui_providers.dart'; +import 'package:http/http.dart' as http; + +import '../consts.dart'; import '../models/models.dart'; import '../services/services.dart' show hiveHandler, HiveHandler, request; import '../utils/utils.dart' show getNewUuid, collectionToHAR; -import '../consts.dart'; -import 'package:http/http.dart' as http; +import 'settings_providers.dart'; +import 'ui_providers.dart'; final selectedIdStateProvider = StateProvider((ref) => null); @@ -24,13 +25,16 @@ final requestSequenceProvider = StateProvider>((ref) { return ids ?? []; }); +final client = http.Client(); + final StateNotifierProvider?> - collectionStateNotifierProvider = - StateNotifierProvider((ref) => CollectionStateNotifier(ref, hiveHandler)); + collectionStateNotifierProvider = StateNotifierProvider( + (ref) => CollectionStateNotifier(ref, hiveHandler, client)); class CollectionStateNotifier extends StateNotifier?> { - CollectionStateNotifier(this.ref, this.hiveHandler) : super(null) { + CollectionStateNotifier(this.ref, this.hiveHandler, this.httpClient) + : super(null) { var status = loadData(); Future.microtask(() { if (status) { @@ -46,6 +50,7 @@ class CollectionStateNotifier final Ref ref; final HiveHandler hiveHandler; final baseResponseModel = const ResponseModel(); + final http.Client httpClient; bool hasId(String id) => state?.keys.contains(id) ?? false; @@ -187,6 +192,7 @@ class CollectionStateNotifier (http.Response?, Duration?, String?)? responseRec = await request( requestModel, defaultUriScheme: defaultUriScheme, + client: httpClient, ); late final RequestModel newRequestModel; if (responseRec.$1 == null) { diff --git a/lib/services/http_service.dart b/lib/services/http_service.dart index dec0b516..9eb9228e 100644 --- a/lib/services/http_service.dart +++ b/lib/services/http_service.dart @@ -1,14 +1,16 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; -import 'package:http/http.dart' as http; -import 'package:apidash/utils/utils.dart'; -import 'package:apidash/models/models.dart'; + import 'package:apidash/consts.dart'; +import 'package:apidash/models/models.dart'; +import 'package:apidash/utils/utils.dart'; +import 'package:http/http.dart' as http; Future<(http.Response?, Duration?, String?)> request( RequestModel requestModel, { String defaultUriScheme = kDefaultUriScheme, + required http.Client client, }) async { (Uri?, String?) uriRec = getValidRequestUri( requestModel.url, @@ -66,23 +68,25 @@ Future<(http.Response?, Duration?, String?)> request( } switch (requestModel.method) { case HTTPVerb.get: - response = await http.get(requestUrl, headers: headers); + response = await client.get(requestUrl, headers: headers); break; case HTTPVerb.head: - response = await http.head(requestUrl, headers: headers); + response = await client.head(requestUrl, headers: headers); break; case HTTPVerb.post: - response = await http.post(requestUrl, headers: headers, body: body); + response = + await client.post(requestUrl, headers: headers, body: body); break; case HTTPVerb.put: - response = await http.put(requestUrl, headers: headers, body: body); + response = await client.put(requestUrl, headers: headers, body: body); break; case HTTPVerb.patch: - response = await http.patch(requestUrl, headers: headers, body: body); + response = + await client.patch(requestUrl, headers: headers, body: body); break; case HTTPVerb.delete: response = - await http.delete(requestUrl, headers: headers, body: body); + await client.delete(requestUrl, headers: headers, body: body); break; } stopwatch.stop();