diff --git a/packages/dart/CHANGELOG.md b/packages/dart/CHANGELOG.md index bbb0e9d96..5fd8b35f8 100644 --- a/packages/dart/CHANGELOG.md +++ b/packages/dart/CHANGELOG.md @@ -1,3 +1,13 @@ +## [4.0.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.14...dart-4.0.0) (2023-03-07) + +### BREAKING CHANGES + +* Upgrades to dio 5.x ([#824](https://github.com/parse-community/Parse-SDK-Flutter/pull/824)) + +### Feature + +* Upgrade various dependencies and fix warnings ([#824](https://github.com/parse-community/Parse-SDK-Flutter/pull/824)) + ## [3.1.15](https://github.com/parse-community/Parse-SDK-Flutter/compare/dart-3.1.14...dart-3.1.15) (2023-02-28) ### Bug Fixes @@ -173,7 +183,7 @@ Bug fixes ## 1.0.22 Added dirty children -Added option of sembast or share_preferences +Added option of sembast or share_preferences ## 1.0.21 @@ -195,7 +205,7 @@ Bug fix ## 1.0.17 -LiveQuery fix +LiveQuery fix Bug fixes ## 1.0.16 diff --git a/packages/dart/lib/parse_server_sdk.dart b/packages/dart/lib/parse_server_sdk.dart index ccd2d6fea..72f1df0df 100644 --- a/packages/dart/lib/parse_server_sdk.dart +++ b/packages/dart/lib/parse_server_sdk.dart @@ -2,7 +2,7 @@ library flutter_parse_sdk; import 'dart:async'; import 'dart:convert'; -import 'dart:io'; +import 'package:universal_io/io.dart'; import 'dart:math'; import 'dart:typed_data'; import 'package:dio/dio.dart'; @@ -142,9 +142,9 @@ class Parse { Future healthCheck( {bool? debug, ParseClient? client, bool? sendSessionIdByDefault}) async { - final bool _debug = isDebugEnabled(objectLevelDebug: debug); + final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); - final ParseClient _client = client ?? + final ParseClient clientLocal = client ?? ParseCoreData().clientCreator( sendSessionId: sendSessionIdByDefault ?? ParseCoreData().autoSendSessionId, @@ -154,11 +154,11 @@ class Parse { const ParseApiRQ type = ParseApiRQ.healthCheck; try { - final ParseNetworkResponse response = - await _client.get('${ParseCoreData().serverUrl}$keyEndPointHealth'); - return handleResponse(null, response, type, _debug, className); + final ParseNetworkResponse response = await clientLocal + .get('${ParseCoreData().serverUrl}$keyEndPointHealth'); + return handleResponse(null, response, type, debugLocal, className); } on Exception catch (e) { - return handleException(e, type, _debug, className); + return handleException(e, type, debugLocal, className); } } } diff --git a/packages/dart/lib/src/base/parse_constants.dart b/packages/dart/lib/src/base/parse_constants.dart index 6e01f1bab..8a72eb63e 100644 --- a/packages/dart/lib/src/base/parse_constants.dart +++ b/packages/dart/lib/src/base/parse_constants.dart @@ -1,7 +1,7 @@ part of flutter_parse_sdk; // Library -const String keySdkVersion = '3.1.15'; +const String keySdkVersion = '4.0.0'; const String keyLibraryName = 'Flutter Parse SDK'; // End Points diff --git a/packages/dart/lib/src/network/dio_adapter_io.dart b/packages/dart/lib/src/network/dio_adapter_io.dart index e0dd6bc17..976810283 100644 --- a/packages/dart/lib/src/network/dio_adapter_io.dart +++ b/packages/dart/lib/src/network/dio_adapter_io.dart @@ -1,11 +1,10 @@ -import 'dart:io'; +import 'package:universal_io/io.dart'; -import 'package:dio/adapter.dart'; +import 'package:dio/io.dart'; import 'package:dio/dio.dart'; HttpClientAdapter createHttpClientAdapter(SecurityContext? securityContext) { - final DefaultHttpClientAdapter defaultHttpClientAdapter = - DefaultHttpClientAdapter(); + final IOHttpClientAdapter defaultHttpClientAdapter = IOHttpClientAdapter(); if (securityContext != null) { defaultHttpClientAdapter.onHttpClientCreate = diff --git a/packages/dart/lib/src/network/dio_adapter_js.dart b/packages/dart/lib/src/network/dio_adapter_js.dart index d4dec6b7a..c35b0a444 100644 --- a/packages/dart/lib/src/network/dio_adapter_js.dart +++ b/packages/dart/lib/src/network/dio_adapter_js.dart @@ -1,9 +1,7 @@ -import 'dart:io'; - -import 'package:dio/adapter_browser.dart'; +import 'package:dio/browser.dart'; import 'package:dio/dio.dart'; -HttpClientAdapter createHttpClientAdapter(SecurityContext? securityContext) { +HttpClientAdapter createHttpClientAdapter(dynamic securityContext) { final BrowserHttpClientAdapter browserHttpClientAdapter = BrowserHttpClientAdapter(); return browserHttpClientAdapter; diff --git a/packages/dart/lib/src/network/parse_dio_client.dart b/packages/dart/lib/src/network/parse_dio_client.dart index c5d344814..3cdfba743 100644 --- a/packages/dart/lib/src/network/parse_dio_client.dart +++ b/packages/dart/lib/src/network/parse_dio_client.dart @@ -1,13 +1,11 @@ -import 'dart:io'; - import 'package:dio/dio.dart' as dio; import 'package:parse_server_sdk/parse_server_sdk.dart'; import 'dio_adapter_io.dart' if (dart.library.js) 'dio_adapter_js.dart'; class ParseDioClient extends ParseClient { - ParseDioClient( - {bool sendSessionId = false, SecurityContext? securityContext}) { + // securityContext is SecurityContext + ParseDioClient({bool sendSessionId = false, dynamic securityContext}) { _client = _ParseDioClient( sendSessionId: sendSessionId, securityContext: securityContext, @@ -66,7 +64,8 @@ class ParseDioClient extends ParseClient { statusCode: error.response?.statusCode ?? ParseError.otherCause, ); } else { - return _getOtherCaseErrorForParseNetworkResponse(error.error); + return _getOtherCaseErrorForParseNetworkResponse( + error.error.toString()); } } } @@ -141,7 +140,8 @@ class ParseDioClient extends ParseClient { statusCode: error.response?.statusCode ?? ParseError.otherCause, ); } else { - return _getOtherCaseErrorForParseNetworkResponse(error.error); + return _getOtherCaseErrorForParseNetworkResponse( + error.error.toString()); } } } @@ -178,8 +178,7 @@ class ParseDioClient extends ParseClient { /// Creates a custom version of HTTP Client that has Parse Data Preset class _ParseDioClient with dio.DioMixin implements dio.Dio { - _ParseDioClient( - {bool sendSessionId = false, SecurityContext? securityContext}) + _ParseDioClient({bool sendSessionId = false, dynamic securityContext}) : _sendSessionId = sendSessionId { options = dio.BaseOptions(); httpClientAdapter = createHttpClientAdapter(securityContext); @@ -243,7 +242,7 @@ class _ParseDioClient with dio.DioMixin implements dio.Dio { void _logCUrl(dio.Options options, dynamic data, String url) { String curlCmd = 'curl'; - curlCmd += ' -X ' + options.method!; + curlCmd += ' -X ${options.method!}'; bool compressed = false; options.headers!.forEach((String name, dynamic value) { if (name.toLowerCase() == 'accept-encoding' && @@ -272,8 +271,8 @@ class _ParseDioClient with dio.DioMixin implements dio.Dio { class _Options extends dio.Options { _Options({ String? method, - int? sendTimeout, - int? receiveTimeout, + Duration? sendTimeout, + Duration? receiveTimeout, Map? extra, Map? headers, dio.ResponseType? responseType, diff --git a/packages/dart/lib/src/network/parse_http_client.dart b/packages/dart/lib/src/network/parse_http_client.dart index 24145849d..4abfd630e 100644 --- a/packages/dart/lib/src/network/parse_http_client.dart +++ b/packages/dart/lib/src/network/parse_http_client.dart @@ -1,5 +1,5 @@ import 'dart:convert'; -import 'dart:io'; +import 'package:universal_io/io.dart'; import 'package:http/http.dart' as http; import 'package:http/io_client.dart'; @@ -161,7 +161,7 @@ class _ParseHTTPClient extends http.BaseClient { void _logCUrl(http.BaseRequest request) { String curlCmd = 'curl'; - curlCmd += ' -X ' + request.method; + curlCmd += ' -X ${request.method}'; bool compressed = false; request.headers.forEach((String name, String value) { if (name.toLowerCase() == 'accept-encoding' && diff --git a/packages/dart/lib/src/network/parse_live_query.dart b/packages/dart/lib/src/network/parse_live_query.dart index 461453654..0f94861f3 100644 --- a/packages/dart/lib/src/network/parse_live_query.dart +++ b/packages/dart/lib/src/network/parse_live_query.dart @@ -352,12 +352,12 @@ class LiveQueryClient { final QueryBuilder query = subscription.query; final List? keysToReturn = query.limiters['keys']?.split(','); query.limiters.clear(); //Remove limits in LiveQuery - final String _where = query.buildQuery().replaceAll('where=', ''); + final String where = query.buildQuery().replaceAll('where=', ''); //Convert where condition to Map - Map _whereMap = {}; - if (_where != '') { - _whereMap = json.decode(_where); + Map whereMap = {}; + if (where != '') { + whereMap = json.decode(where); } final Map subscribeMessage = { @@ -365,7 +365,7 @@ class LiveQueryClient { 'requestId': subscription.requestId, 'query': { 'className': query.object.parseClassName, - 'where': _whereMap, + 'where': whereMap, if (keysToReturn != null && keysToReturn.isNotEmpty) 'fields': keysToReturn } diff --git a/packages/dart/lib/src/network/parse_query.dart b/packages/dart/lib/src/network/parse_query.dart index e4b4cc3f9..971a90eb3 100644 --- a/packages/dart/lib/src/network/parse_query.dart +++ b/packages/dart/lib/src/network/parse_query.dart @@ -27,7 +27,7 @@ class QueryBuilder { if (i > 0) { query += ','; } - query += '{' + list[i].buildQueries(list[i].queries) + '}'; + query += '{${list[i].buildQueries(list[i].queries)}}'; } query += ']'; queries.add(MapEntry(_noOperatorNeeded, query)); @@ -523,7 +523,7 @@ class QueryBuilder { String getLimiters(Map map) { String result = ''; map.forEach((String key, dynamic value) { - result = result + '&$key=$value'; + result = '$result&$key=$value'; }); return result; } @@ -533,7 +533,7 @@ class QueryBuilder { String result = ''; map.forEach((String key, dynamic value) { if (result.isNotEmpty) { - result = result + ',"$key":$value'; + result = '$result,"$key":$value'; } else { result = '"$key":$value'; } diff --git a/packages/dart/lib/src/objects/parse_object.dart b/packages/dart/lib/src/objects/parse_object.dart index e952c575b..adab172cc 100644 --- a/packages/dart/lib/src/objects/parse_object.dart +++ b/packages/dart/lib/src/objects/parse_object.dart @@ -226,7 +226,7 @@ class ParseObject extends ParseBase implements ParseCloneable { final String parsePath = tempUri.path; final dynamic request = { 'method': method, - 'path': '$parsePath$_path' + (objectId != null ? '/$objectId' : ''), + 'path': '$parsePath$_path${objectId != null ? '/$objectId' : ''}', 'body': toJson(forApiRQ: true) }; return request; diff --git a/packages/dart/lib/src/objects/parse_user.dart b/packages/dart/lib/src/objects/parse_user.dart index e4c15bfc6..8bdf0c7d3 100644 --- a/packages/dart/lib/src/objects/parse_user.dart +++ b/packages/dart/lib/src/objects/parse_user.dart @@ -112,8 +112,8 @@ class ParseUser extends ParseObject implements ParseCloneable { /// if using custom ParseUser object Future getUpdatedUser( {bool? debug, ParseClient? client}) async { - final bool _debug = isDebugEnabled(objectLevelDebug: debug); - final ParseClient _client = client ?? + final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); + final ParseClient clientLocal = client ?? ParseCoreData().clientCreator( sendSessionId: true, securityContext: ParseCoreData().securityContext); @@ -130,15 +130,16 @@ class ParseUser extends ParseObject implements ParseCloneable { } try { - final Uri url = getSanitisedUri(_client, keyEndPointUserName); - final ParseNetworkResponse response = await _client.get( + final Uri url = getSanitisedUri(clientLocal, keyEndPointUserName); + final ParseNetworkResponse response = await clientLocal.get( url.toString(), options: ParseNetworkOptions(headers: headers), ); return await _handleResponse( - this, response, ParseApiRQ.currentUser, _debug, parseClassName); + this, response, ParseApiRQ.currentUser, debugLocal, parseClassName); } on Exception catch (e) { - return handleException(e, ParseApiRQ.currentUser, _debug, parseClassName); + return handleException( + e, ParseApiRQ.currentUser, debugLocal, parseClassName); } } @@ -442,20 +443,21 @@ class ParseUser extends ParseObject implements ParseCloneable { static Future all({bool? debug, ParseClient? client}) async { final ParseUser emptyUser = _getEmptyUser(); - final bool _debug = isDebugEnabled(objectLevelDebug: debug); - final ParseClient _client = client ?? + final bool debugLocal = isDebugEnabled(objectLevelDebug: debug); + final ParseClient clientLocal = client ?? ParseCoreData().clientCreator( sendSessionId: true, securityContext: ParseCoreData().securityContext); try { - final Uri url = getSanitisedUri(_client, path); - final ParseNetworkResponse response = await _client.get(url.toString()); + final Uri url = getSanitisedUri(clientLocal, path); + final ParseNetworkResponse response = + await clientLocal.get(url.toString()); final ParseResponse parseResponse = handleResponse( - emptyUser, response, ParseApiRQ.getAll, _debug, keyClassUser); + emptyUser, response, ParseApiRQ.getAll, debugLocal, keyClassUser); return parseResponse; } on Exception catch (e) { - return handleException(e, ParseApiRQ.getAll, _debug, keyClassUser); + return handleException(e, ParseApiRQ.getAll, debugLocal, keyClassUser); } } diff --git a/packages/dart/lib/src/objects/response/parse_response_builder.dart b/packages/dart/lib/src/objects/response/parse_response_builder.dart index d36d8dd98..cd151267c 100644 --- a/packages/dart/lib/src/objects/response/parse_response_builder.dart +++ b/packages/dart/lib/src/objects/response/parse_response_builder.dart @@ -115,7 +115,7 @@ class _ParseResponseBuilder { List _handleMultipleResults(T object, List data) { final List resultsList = []; for (dynamic value in data) { - resultsList.add(_handleSingleResult(object, value, true)!); + resultsList.add(_handleSingleResult(object, value, true) as T); } return resultsList; } diff --git a/packages/dart/lib/src/utils/parse_live_list.dart b/packages/dart/lib/src/utils/parse_live_list.dart index 1dd2798b3..99df16cc2 100644 --- a/packages/dart/lib/src/utils/parse_live_list.dart +++ b/packages/dart/lib/src/utils/parse_live_list.dart @@ -9,17 +9,17 @@ class ParseLiveList { } static Future> create( - QueryBuilder _query, { + QueryBuilder query, { bool? listenOnAllSubItems, List? listeningIncludes, bool lazyLoading = true, List? preloadedColumns, }) { final ParseLiveList parseLiveList = ParseLiveList._( - _query, + query, listenOnAllSubItems == true ? _toIncludeMap( - _query.limiters['include']?.toString().split(',') ?? []) + query.limiters['include']?.toString().split(',') ?? []) : _toIncludeMap(listeningIncludes ?? []), lazyLoading, preloadedColumns: preloadedColumns ?? const [], diff --git a/packages/dart/pubspec.yaml b/packages/dart/pubspec.yaml index f202c1e79..e2b3182bf 100644 --- a/packages/dart/pubspec.yaml +++ b/packages/dart/pubspec.yaml @@ -1,6 +1,6 @@ name: parse_server_sdk description: Dart plugin for Parse Server, (https://parseplatform.org), (https://back4app.com) -version: 3.1.15 +version: 4.0.0 homepage: https://github.com/parse-community/Parse-SDK-Flutter environment: @@ -8,25 +8,26 @@ environment: dependencies: # Networking - dio: ^4.0.6 - http: ^0.13.4 - web_socket_channel: ^2.2.0 + dio: ^5.0.1 + http: ^0.13.5 + web_socket_channel: ^2.3.0 #Database - sembast: ^3.2.0 - sembast_web: ^2.0.1+1 + sembast: ^3.4.0+6 + sembast_web: ^2.1.0+4 xxtea: ^2.1.0 # Utils - uuid: ^3.0.6 - meta: ^1.7.0 - path: ^1.8.1 + uuid: ^3.0.7 + meta: ^1.8.0 + path: ^1.8.2 mime_type: ^1.0.0 - timezone: ^0.9.0 + timezone: ^0.9.1 + universal_io: ^2.2.0 dev_dependencies: - lints: ^1.0.1 + lints: ^2.0.1 # Testing - build_runner: ^2.1.11 - mockito: ^5.2.0 - test: ^1.21.4 + build_runner: ^2.3.3 + mockito: ^5.3.2 + test: ^1.23.1 diff --git a/packages/dart/test/parse_query_test.dart b/packages/dart/test/parse_query_test.dart index f0740bbd9..d6f225ab0 100644 --- a/packages/dart/test/parse_query_test.dart +++ b/packages/dart/test/parse_query_test.dart @@ -77,7 +77,7 @@ void main() { }, }; final Uri expectedQuery = - Uri(query: 'where=' + jsonEncode(queryDesiredOutput)); + Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); // assert expect(response.results?.first, isA()); @@ -156,7 +156,7 @@ void main() { ], }; final Uri expectedQuery = - Uri(query: 'where=' + jsonEncode(queryDesiredOutput)); + Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); // assert expect(response.results?.first, isA()); @@ -234,7 +234,7 @@ void main() { ], }; final Uri expectedQuery = - Uri(query: 'where=' + jsonEncode(queryDesiredOutput)); + Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); // assert expect(response.results?.first, isA()); @@ -313,7 +313,7 @@ void main() { ], }; final Uri expectedQuery = - Uri(query: 'where=' + jsonEncode(queryDesiredOutput)); + Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); // assert expect(response.results?.first, isA()); @@ -389,7 +389,7 @@ void main() { } }; final Uri expectedQuery = - Uri(query: 'where=' + jsonEncode(queryDesiredOutput)); + Uri(query: 'where=${jsonEncode(queryDesiredOutput)}'); // assert expect(response.results?.first, isA()); diff --git a/packages/dart/test/parse_query_test.mocks.dart b/packages/dart/test/parse_query_test.mocks.dart index c29563324..46bb50cf4 100644 --- a/packages/dart/test/parse_query_test.mocks.dart +++ b/packages/dart/test/parse_query_test.mocks.dart @@ -2,68 +2,68 @@ // in parse_server_sdk/test/parse_query_test.dart. // Do not manually edit this file. -import 'dart:async' as _i3; +import 'dart:async' as i3; -import 'package:mockito/mockito.dart' as _i1; -import 'package:parse_server_sdk/parse_server_sdk.dart' as _i2; +import 'package:mockito/mockito.dart' as i1; +import 'package:parse_server_sdk/parse_server_sdk.dart' as i2; // ignore_for_file: comment_references // ignore_for_file: unnecessary_parenthesis -class _FakeParseCoreData extends _i1.Fake implements _i2.ParseCoreData {} +class _FakeParseCoreData extends i1.Fake implements i2.ParseCoreData {} -class _FakeParseNetworkResponse extends _i1.Fake - implements _i2.ParseNetworkResponse {} +class _FakeParseNetworkResponse extends i1.Fake + implements i2.ParseNetworkResponse {} -class _FakeParseNetworkByteResponse extends _i1.Fake - implements _i2.ParseNetworkByteResponse {} +class _FakeParseNetworkByteResponse extends i1.Fake + implements i2.ParseNetworkByteResponse {} /// A class which mocks [ParseClient]. /// /// See the documentation for Mockito's code generation for more information. -class MockParseClient extends _i1.Mock implements _i2.ParseClient { +class MockParseClient extends i1.Mock implements i2.ParseClient { MockParseClient() { - _i1.throwOnMissingStub(this); + i1.throwOnMissingStub(this); } @override - _i2.ParseCoreData get data => (super.noSuchMethod(Invocation.getter(#data), - returnValue: _FakeParseCoreData()) as _i2.ParseCoreData); + i2.ParseCoreData get data => (super.noSuchMethod(Invocation.getter(#data), + returnValue: _FakeParseCoreData()) as i2.ParseCoreData); @override - _i3.Future<_i2.ParseNetworkResponse> get(String? path, - {_i2.ParseNetworkOptions? options, - _i2.ProgressCallback? onReceiveProgress}) => + i3.Future get(String? path, + {i2.ParseNetworkOptions? options, + i2.ProgressCallback? onReceiveProgress}) => (super.noSuchMethod( Invocation.method(#get, [path], {#options: options, #onReceiveProgress: onReceiveProgress}), - returnValue: Future<_i2.ParseNetworkResponse>.value( + returnValue: Future.value( _FakeParseNetworkResponse())) - as _i3.Future<_i2.ParseNetworkResponse>); + as i3.Future); @override - _i3.Future<_i2.ParseNetworkResponse> put(String? path, - {String? data, _i2.ParseNetworkOptions? options}) => + i3.Future put(String? path, + {String? data, i2.ParseNetworkOptions? options}) => (super.noSuchMethod( Invocation.method(#put, [path], {#data: data, #options: options}), - returnValue: Future<_i2.ParseNetworkResponse>.value( + returnValue: Future.value( _FakeParseNetworkResponse())) - as _i3.Future<_i2.ParseNetworkResponse>); + as i3.Future); @override - _i3.Future<_i2.ParseNetworkResponse> post(String? path, - {String? data, _i2.ParseNetworkOptions? options}) => + i3.Future post(String? path, + {String? data, i2.ParseNetworkOptions? options}) => (super.noSuchMethod( Invocation.method(#post, [path], {#data: data, #options: options}), - returnValue: Future<_i2.ParseNetworkResponse>.value( - _FakeParseNetworkResponse())) as _i3 - .Future<_i2.ParseNetworkResponse>); + returnValue: Future.value( + _FakeParseNetworkResponse())) as i3 + .Future); @override - _i3.Future<_i2.ParseNetworkResponse> postBytes(String? path, - {_i3.Stream>? data, - _i2.ParseNetworkOptions? options, - _i2.ProgressCallback? onSendProgress, + i3.Future postBytes(String? path, + {i3.Stream>? data, + i2.ParseNetworkOptions? options, + i2.ProgressCallback? onSendProgress, dynamic cancelToken}) => (super.noSuchMethod( Invocation.method(#postBytes, [ @@ -74,23 +74,23 @@ class MockParseClient extends _i1.Mock implements _i2.ParseClient { #onSendProgress: onSendProgress, #cancelToken: cancelToken }), - returnValue: Future<_i2.ParseNetworkResponse>.value( + returnValue: Future.value( _FakeParseNetworkResponse())) - as _i3.Future<_i2.ParseNetworkResponse>); + as i3.Future); @override - _i3.Future<_i2.ParseNetworkResponse> delete(String? path, - {_i2.ParseNetworkOptions? options}) => + i3.Future delete(String? path, + {i2.ParseNetworkOptions? options}) => (super.noSuchMethod( Invocation.method(#delete, [path], {#options: options}), - returnValue: Future<_i2.ParseNetworkResponse>.value( + returnValue: Future.value( _FakeParseNetworkResponse())) - as _i3.Future<_i2.ParseNetworkResponse>); + as i3.Future); @override - _i3.Future<_i2.ParseNetworkByteResponse> getBytes(String? path, - {_i2.ParseNetworkOptions? options, - _i2.ProgressCallback? onReceiveProgress, + i3.Future getBytes(String? path, + {i2.ParseNetworkOptions? options, + i2.ProgressCallback? onReceiveProgress, dynamic cancelToken}) => (super.noSuchMethod( Invocation.method(#getBytes, [ @@ -100,7 +100,7 @@ class MockParseClient extends _i1.Mock implements _i2.ParseClient { #onReceiveProgress: onReceiveProgress, #cancelToken: cancelToken }), - returnValue: Future<_i2.ParseNetworkByteResponse>.value( + returnValue: Future.value( _FakeParseNetworkByteResponse())) - as _i3.Future<_i2.ParseNetworkByteResponse>); + as i3.Future); }