diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a285db9cf..f56045a45 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,7 @@ jobs: working-directory: packages/dart run: | dart pub global activate coverage - dart pub global run coverage:format_coverage -i coverage/test -o coverage/lcov.info --lcov --packages=.packages --report-on=lib + dart pub global run coverage:format_coverage -i coverage/test -o coverage/lcov.info --lcov --packages=.dart_tool/package_config.json --report-on=lib - name: Upload code coverage uses: codecov/codecov-action@v2 # Needs to be adapted to collect the coverage at all platforms if platform specific code is added. diff --git a/packages/dart/CHANGELOG.md b/packages/dart/CHANGELOG.md index 29796722d..992a0722c 100644 --- a/packages/dart/CHANGELOG.md +++ b/packages/dart/CHANGELOG.md @@ -1,3 +1,9 @@ +## [3.1.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.1.0...dart-3.1.1) + +### Refactor + +* fix analyzer code style warnings ([#733](https://github.com/parse-community/Parse-SDK-Flutter/issues/733)) + # [3.1.0](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.0.0...V3.1.0) (2021-06-28) ### Bug Fixes diff --git a/packages/dart/lib/src/data/parse_subclass_handler.dart b/packages/dart/lib/src/data/parse_subclass_handler.dart index 2205abc7c..f7ed18cf9 100644 --- a/packages/dart/lib/src/data/parse_subclass_handler.dart +++ b/packages/dart/lib/src/data/parse_subclass_handler.dart @@ -12,30 +12,34 @@ class ParseSubClassHandler { {Map? registeredSubClassMap, ParseUserConstructor? parseUserConstructor, ParseFileConstructor? parseFileConstructor}) { - _subClassMap = - registeredSubClassMap ?? Map(); + _subClassMap = registeredSubClassMap ?? {}; _parseUserConstructor = parseUserConstructor; - if (parseFileConstructor != null) + if (parseFileConstructor != null) { _parseFileConstructor = parseFileConstructor; + } } late Map _subClassMap; ParseUserConstructor? _parseUserConstructor; - ParseFileConstructor _parseFileConstructor = ({String? name, String? url}) { + ParseFileConstructor _parseFileConstructor = defaultParseFileConstructor; + + static ParseFileBase defaultParseFileConstructor( + {String? name, String? url}) { if (parseIsWeb) { return ParseWebFile(null, name: name!, url: url); } else { return ParseFile(null, name: name, url: url); } - }; + } void registerSubClass( String className, ParseObjectConstructor objectConstructor) { if (className != keyClassUser && className != keyClassInstallation && className != keyClassSession && - className != keyFileClassname) + className != keyFileClassname) { _subClassMap[className] = objectConstructor; + } } void registerUserSubClass(ParseUserConstructor parseUserConstructor) { diff --git a/packages/dart/lib/src/network/dio_adapter_io.dart b/packages/dart/lib/src/network/dio_adapter_io.dart index e8e509560..e0dd6bc17 100644 --- a/packages/dart/lib/src/network/dio_adapter_io.dart +++ b/packages/dart/lib/src/network/dio_adapter_io.dart @@ -7,8 +7,9 @@ HttpClientAdapter createHttpClientAdapter(SecurityContext? securityContext) { final DefaultHttpClientAdapter defaultHttpClientAdapter = DefaultHttpClientAdapter(); - if (securityContext != null) + if (securityContext != null) { defaultHttpClientAdapter.onHttpClientCreate = (HttpClient client) => HttpClient(context: securityContext); + } return defaultHttpClientAdapter; } diff --git a/packages/dart/lib/src/network/parse_client.dart b/packages/dart/lib/src/network/parse_client.dart index d71683f73..bf8c30f04 100644 --- a/packages/dart/lib/src/network/parse_client.dart +++ b/packages/dart/lib/src/network/parse_client.dart @@ -62,7 +62,7 @@ abstract class ParseClient { // ParseNetworkOptions options, // }); - @deprecated + @Deprecated("Use ParseCoreData() instead.") ParseCoreData get data => ParseCoreData(); } diff --git a/packages/dart/lib/src/network/parse_dio_client.dart b/packages/dart/lib/src/network/parse_dio_client.dart index f76a3babb..a28483155 100644 --- a/packages/dart/lib/src/network/parse_dio_client.dart +++ b/packages/dart/lib/src/network/parse_dio_client.dart @@ -159,13 +159,16 @@ class _ParseDioClient with dio.DioMixin implements dio.Dio { options.headers![keyHeaderApplicationId] = parseCoreData.applicationId; if (_sendSessionId && parseCoreData.sessionId != null && - options.headers![keyHeaderSessionToken] == null) + options.headers![keyHeaderSessionToken] == null) { options.headers![keyHeaderSessionToken] = parseCoreData.sessionId; + } - if (parseCoreData.clientKey != null) + if (parseCoreData.clientKey != null) { options.headers![keyHeaderClientKey] = parseCoreData.clientKey; - if (parseCoreData.masterKey != null) + } + if (parseCoreData.masterKey != null) { options.headers![keyHeaderMasterKey] = parseCoreData.masterKey; + } /// If developer wants to add custom headers, extend this class and add headers needed. if (additionalHeaders != null && additionalHeaders!.isNotEmpty) { diff --git a/packages/dart/lib/src/network/parse_http_client.dart b/packages/dart/lib/src/network/parse_http_client.dart index 3992373d9..bc49c9581 100644 --- a/packages/dart/lib/src/network/parse_http_client.dart +++ b/packages/dart/lib/src/network/parse_http_client.dart @@ -133,13 +133,16 @@ class _ParseHTTPClient extends http.BaseClient { request.headers[keyHeaderApplicationId] = parseCoreData.applicationId; if (_sendSessionId && parseCoreData.sessionId != null && - request.headers[keyHeaderSessionToken] == null) + request.headers[keyHeaderSessionToken] == null) { request.headers[keyHeaderSessionToken] = parseCoreData.sessionId!; + } - if (parseCoreData.clientKey != null) + if (parseCoreData.clientKey != null) { request.headers[keyHeaderClientKey] = parseCoreData.clientKey!; - if (parseCoreData.masterKey != null) + } + if (parseCoreData.masterKey != null) { request.headers[keyHeaderMasterKey] = parseCoreData.masterKey!; + } /// If developer wants to add custom headers, extend this class and add headers needed. if (additionalHeaders != null && additionalHeaders!.isNotEmpty) { diff --git a/packages/dart/lib/src/network/parse_live_query.dart b/packages/dart/lib/src/network/parse_live_query.dart index 93dbba882..f30cfedf6 100644 --- a/packages/dart/lib/src/network/parse_live_query.dart +++ b/packages/dart/lib/src/network/parse_live_query.dart @@ -115,8 +115,9 @@ class LiveQueryReconnectingController { _currentTimer = null; _reconnect(); }); - if (debug) + if (debug) { print('$DEBUG_TAG: Retrytimer set to ${retryInterval[_retryState]}ms'); + } if (_retryState < retryInterval.length - 1) { _retryState++; } @@ -212,9 +213,10 @@ class LiveQueryClient { subscription._enabled = false; }); _connecting = false; - if (userInitialized) + if (userInitialized) { _clientEventStreamController.sink .add(LiveQueryClientEvent.USER_DISCONNECTED); + } } Future> subscribe( @@ -353,7 +355,7 @@ class LiveQueryClient { final String _where = query.buildQuery().replaceAll('where=', ''); //Convert where condition to Map - Map _whereMap = Map(); + Map _whereMap = {}; if (_where != '') { _whereMap = json.decode(_where); } diff --git a/packages/dart/lib/src/network/parse_query.dart b/packages/dart/lib/src/network/parse_query.dart index b2932ef06..9d5bde048 100644 --- a/packages/dart/lib/src/network/parse_query.dart +++ b/packages/dart/lib/src/network/parse_query.dart @@ -37,7 +37,7 @@ class QueryBuilder { T object; List> queries = >[]; - final Map limiters = Map(); + final Map limiters = {}; /// Adds a limit to amount of results return from Parse void setLimit(int limit) { @@ -103,10 +103,10 @@ class QueryBuilder { {bool caseSensitive = false}) { if (caseSensitive) { queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$regex\": \"^$query\"}')); + _SINGLE_QUERY, '"$column":{"\$regex": "^$query"}')); } else { - queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$regex\": \"^$query\", \"\$options\": \"i\"}')); + queries.add(MapEntry( + _SINGLE_QUERY, '"$column":{"\$regex": "^$query", "\$options": "i"}')); } } @@ -115,10 +115,10 @@ class QueryBuilder { {bool caseSensitive = false}) { if (caseSensitive) { queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$regex\": \"$query\$\"}')); + _SINGLE_QUERY, '"$column":{"\$regex": "$query\$"}')); } else { queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$regex\": \"$query\$\", \"\$options\": \"i\"}')); + '"$column":{"\$regex": "$query\$", "\$options": "i"}')); } } @@ -183,7 +183,7 @@ class QueryBuilder { /// Retrieves related objets where [String] column is a relation field to the class [String] className void whereRelatedTo(String column, String className, String objectId) { queries.add(MapEntry(_SINGLE_QUERY, - '\"\$relatedTo\":{\"object\":{\"__type\":\"Pointer\",\"className\":\"$className\",\"objectId\":\"$objectId\"},\"key\":\"$column\"}')); + '"\$relatedTo":{"object":{"__type":"Pointer","className":"$className","objectId":"$objectId"},"key":"$column"}')); } /// Returns an object where the [String] column contains select @@ -216,10 +216,10 @@ class QueryBuilder { {bool caseSensitive = false}) { if (caseSensitive) { queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$regex\": \"$value\"}')); + _SINGLE_QUERY, '"$column":{"\$regex": "$value"}')); } else { - queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$regex\": \"$value\", \"\$options\": \"i\"}')); + queries.add(MapEntry( + _SINGLE_QUERY, '"$column":{"\$regex": "$value", "\$options": "i"}')); } } @@ -230,7 +230,7 @@ class QueryBuilder { bool orderByScore = true, bool diacriticSensitive = false}) { queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$text\":{\"\$search\":{\"\$term\": \"$query\", \"\$caseSensitive\": $caseSensitive , \"\$diacriticSensitive\": $diacriticSensitive }}}')); + '"$column":{"\$text":{"\$search":{"\$term": "$query", "\$caseSensitive": $caseSensitive , "\$diacriticSensitive": $diacriticSensitive }}}')); if (orderByScore) { orderByAscending('\$score'); keysToReturn(['\$score']); @@ -242,7 +242,7 @@ class QueryBuilder { final double latitude = point.latitude; final double longitude = point.longitude; queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$nearSphere\":{\"__type\":\"GeoPoint\",\"latitude\":$latitude,\"longitude\":$longitude}}')); + '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude}}')); } /// Returns an object with key point values near the point given and within the maximum distance given. @@ -252,7 +252,7 @@ class QueryBuilder { final double longitude = point.longitude; queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$nearSphere\":{\"__type\":\"GeoPoint\",\"latitude\":$latitude,\"longitude\":$longitude},\"\$maxDistanceInMiles\":$maxDistance}')); + '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInMiles":$maxDistance}')); } /// Returns an object with key point values near the point given and within the maximum distance given. @@ -262,7 +262,7 @@ class QueryBuilder { final double longitude = point.longitude; queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$nearSphere\":{\"__type\":\"GeoPoint\",\"latitude\":$latitude,\"longitude\":$longitude},\"\$maxDistanceInKilometers\":$maxDistance}')); + '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInKilometers":$maxDistance}')); } /// Returns an object with key point values near the point given and within the maximum distance given. @@ -272,7 +272,7 @@ class QueryBuilder { final double longitude = point.longitude; queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$nearSphere\":{\"__type\":\"GeoPoint\",\"latitude\":$latitude,\"longitude\":$longitude},\"\$maxDistanceInRadians\":$maxDistance}')); + '"$column":{"\$nearSphere":{"__type":"GeoPoint","latitude":$latitude,"longitude":$longitude},"\$maxDistanceInRadians":$maxDistance}')); } /// Returns an object with key point values contained within a given rectangular geographic bounding box. @@ -285,20 +285,21 @@ class QueryBuilder { final double longitudeN = northeast.longitude; queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$within\":{\"\$box\": [{\"__type\": \"GeoPoint\",\"latitude\":$latitudeS,\"longitude\":$longitudeS},{\"__type\": \"GeoPoint\",\"latitude\":$latitudeN,\"longitude\":$longitudeN}]}}')); + '"$column":{"\$within":{"\$box": [{"__type": "GeoPoint","latitude":$latitudeS,"longitude":$longitudeS},{"__type": "GeoPoint","latitude":$latitudeN,"longitude":$longitudeN}]}}')); } /// Return an object with key coordinates be contained within and on the bounds of a given polygon. /// Supports closed and open (last point is connected to first) paths /// Polygon must have at least 3 points void whereWithinPolygon(String column, List points) { - if (points.length < 3) + if (points.length < 3) { throw ArgumentError('Polygon must have at least 3 points'); + } Map dictionary = {}; dictionary['\$polygon'] = points.map((e) => e.toJson()).toList(); - queries.add(MapEntry(_SINGLE_QUERY, - '\"$column\":{\"\$geoWithin\":${jsonEncode(dictionary)}}')); + queries.add(MapEntry( + _SINGLE_QUERY, '"$column":{"\$geoWithin":${jsonEncode(dictionary)}}')); } /// Add a constraint to the query that requires a particular key's value match another QueryBuilder @@ -308,7 +309,7 @@ class QueryBuilder { query._buildQueryRelational(query.object.parseClassName); queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$inQuery\":$inQuery}')); + _SINGLE_QUERY, '"$column":{"\$inQuery":$inQuery}')); } ///Add a constraint to the query that requires a particular key's value does not match another QueryBuilder @@ -318,7 +319,7 @@ class QueryBuilder { query._buildQueryRelational(query.object.parseClassName); queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$notInQuery\":$inQuery}')); + _SINGLE_QUERY, '"$column":{"\$notInQuery":$inQuery}')); } /// Add a constraint to the query that requires a particular key's value matches a value for a key in the results of another ParseQuery. @@ -338,7 +339,7 @@ class QueryBuilder { query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery); queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$select\":$inQuery}')); + _SINGLE_QUERY, '"$column":{"\$select":$inQuery}')); } /// Add a constraint to the query that requires a particular key's value does not match any value for a key in the results of another ParseQuery @@ -358,24 +359,24 @@ class QueryBuilder { query._buildQueryRelationalKey(query.object.parseClassName, keyInQuery); queries.add(MapEntry( - _SINGLE_QUERY, '\"$column\":{\"\$dontSelect\":$inQuery}')); + _SINGLE_QUERY, '"$column":{"\$dontSelect":$inQuery}')); } /// Finishes the query and calls the server /// /// Make sure to call this after defining your queries - Future query( + Future query( {ProgressCallback? progressCallback}) async { - return object.query( + return object.query( buildQuery(), progressCallback: progressCallback, ); } - Future distinct( + Future distinct( String className) async { final String queryString = 'distinct=$className'; - return object.distinct(queryString); + return object.distinct(queryString); } ///Counts the number of objects that match this query @@ -392,13 +393,13 @@ class QueryBuilder { /// Builds the query relational for Parse String _buildQueryRelational(String className) { queries = _checkForMultipleColumnInstances(queries); - return '{\"where\":{${buildQueries(queries)}},\"className\":\"$className\"${getLimitersRelational(limiters)}}'; + return '{"where":{${buildQueries(queries)}},"className":"$className"${getLimitersRelational(limiters)}}'; } /// Builds the query relational with Key for Parse String _buildQueryRelationalKey(String className, String keyInQuery) { queries = _checkForMultipleColumnInstances(queries); - return '{\"query\":{\"className\":\"$className\",\"where\":{${buildQueries(queries)}}},\"key\":\"$keyInQuery\"}'; + return '{"query":{"className":"$className","where":{${buildQueries(queries)}}},"key":"$keyInQuery"}'; } /// Builds the query for Parse @@ -446,15 +447,14 @@ class QueryBuilder { if (queryOperator == _NO_OPERATOR_NEEDED) { return MapEntry( - _NO_OPERATOR_NEEDED, '\"$key\": ${jsonEncode(value)}'); + _NO_OPERATOR_NEEDED, '"$key": ${jsonEncode(value)}'); } else { - String queryString = '\"$key\":'; - final Map queryOperatorAndValueMap = - Map(); + String queryString = '"$key":'; + final Map queryOperatorAndValueMap = {}; queryOperatorAndValueMap[queryOperator] = parseEncode(value); final String formattedQueryOperatorAndValue = jsonEncode(queryOperatorAndValueMap); - queryString += '$formattedQueryOperatorAndValue'; + queryString += formattedQueryOperatorAndValue; return MapEntry(key, queryString); } } @@ -488,7 +488,7 @@ class QueryBuilder { .toList(); // Build first part of query - String queryStart = '\"${query.key}\":'; + String queryStart = '"${query.key}":'; String queryEnd = ''; // Compact all the queries in the correct format @@ -526,9 +526,9 @@ 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'; + result = '"$key":$value'; } }); return result; diff --git a/packages/dart/lib/src/objects/parse_base.dart b/packages/dart/lib/src/objects/parse_base.dart index 6521729d1..1edc5908c 100644 --- a/packages/dart/lib/src/objects/parse_base.dart +++ b/packages/dart/lib/src/objects/parse_base.dart @@ -3,11 +3,11 @@ part of flutter_parse_sdk; abstract class ParseBase { String parseClassName = 'ParseBase'; final bool _dirty = false; // reserved property - final Map _unsavedChanges = Map(); - final Map _savingChanges = Map(); + final Map _unsavedChanges = {}; + final Map _savingChanges = {}; /// Stores all the values of a class - Map _objectData = Map(); + Map _objectData = {}; /// Returns [String] objectId String? get objectId => get(keyVarObjectId); @@ -27,7 +27,7 @@ abstract class ParseBase { } if (considerChildren) { - return _areChildrenDirty(Set()); + return _areChildrenDirty({}); } return false; } diff --git a/packages/dart/lib/src/objects/parse_config.dart b/packages/dart/lib/src/objects/parse_config.dart index 1e0d85640..8df935d63 100644 --- a/packages/dart/lib/src/objects/parse_config.dart +++ b/packages/dart/lib/src/objects/parse_config.dart @@ -30,7 +30,7 @@ class ParseConfig extends ParseObject { try { final String uri = '${ParseCoreData().serverUrl}/config'; final String body = - '{\"params\":{\"$key\": ${json.encode(parseEncode(value))}}}'; + '{"params":{"$key": ${json.encode(parseEncode(value))}}}'; final ParseNetworkResponse result = await _client.put(uri, data: body); return handleResponse( this, result, ParseApiRQ.addConfig, _debug, parseClassName); diff --git a/packages/dart/lib/src/objects/parse_error.dart b/packages/dart/lib/src/objects/parse_error.dart index d450ba737..a13b32c5d 100644 --- a/packages/dart/lib/src/objects/parse_error.dart +++ b/packages/dart/lib/src/objects/parse_error.dart @@ -13,7 +13,7 @@ class ParseError { } } - Map _exceptions = { + static const Map _exceptions = { -1: 'UnknownError', // SDK errors / Errors diff --git a/packages/dart/lib/src/objects/parse_file.dart b/packages/dart/lib/src/objects/parse_file.dart index 35ed5c8fd..fe223d6fa 100644 --- a/packages/dart/lib/src/objects/parse_file.dart +++ b/packages/dart/lib/src/objects/parse_file.dart @@ -73,7 +73,7 @@ class ParseFile extends ParseFileBase { mime(file!.path) ?? 'application/octet-stream', }; try { - final String uri = ParseCoreData().serverUrl + '$_path'; + final String uri = ParseCoreData().serverUrl + _path; final ParseNetworkResponse response = await _client.postBytes( uri, options: ParseNetworkOptions(headers: headers), diff --git a/packages/dart/lib/src/objects/parse_file_web.dart b/packages/dart/lib/src/objects/parse_file_web.dart index 3a6a57398..2b1f050e1 100644 --- a/packages/dart/lib/src/objects/parse_file_web.dart +++ b/packages/dart/lib/src/objects/parse_file_web.dart @@ -53,7 +53,7 @@ class ParseWebFile extends ParseFileBase { mime(url ?? name) ?? 'application/octet-stream', }; try { - final String uri = ParseCoreData().serverUrl + '$_path'; + final String uri = ParseCoreData().serverUrl + _path; final ParseNetworkResponse response = await _client.postBytes( uri, options: ParseNetworkOptions(headers: headers), diff --git a/packages/dart/lib/src/objects/parse_object.dart b/packages/dart/lib/src/objects/parse_object.dart index 12b4f9985..3a2ee5728 100644 --- a/packages/dart/lib/src/objects/parse_object.dart +++ b/packages/dart/lib/src/objects/parse_object.dart @@ -49,7 +49,7 @@ class ParseObject extends ParseBase implements ParseCloneable { /// Gets all objects from this table - Limited response at the moment Future getAll() async { try { - final Uri url = getSanitisedUri(_client, '$_path'); + final Uri url = getSanitisedUri(_client, _path); final ParseNetworkResponse result = await _client.get(url.toString()); return handleResponse( this, result, ParseApiRQ.getAll, _debug, parseClassName); @@ -61,7 +61,7 @@ class ParseObject extends ParseBase implements ParseCloneable { /// Creates a new object and saves it online Future create({bool allowCustomObjectId = false}) async { try { - final Uri url = getSanitisedUri(_client, '$_path'); + final Uri url = getSanitisedUri(_client, _path); final String body = json.encode(toJson( forApiRQ: true, allowCustomObjectId: allowCustomObjectId, @@ -118,10 +118,10 @@ class ParseObject extends ParseBase implements ParseCloneable { } Future _saveChildren(dynamic object) async { - final Set uniqueObjects = Set(); - final Set uniqueFiles = Set(); - if (!_collectionDirtyChildren(object, uniqueObjects, uniqueFiles, - Set(), Set())) { + final Set uniqueObjects = {}; + final Set uniqueFiles = {}; + if (!_collectionDirtyChildren( + object, uniqueObjects, uniqueFiles, {}, {})) { final ParseResponse response = ParseResponse(); return response; } @@ -279,7 +279,7 @@ class ParseObject extends ParseBase implements ParseCloneable { /* Check for cycles of new objects. Any such cycle means it will be impossible to save this collection of objects, so throw an exception. */ if (object.objectId != null) { - seenNew = Set(); + seenNew = {}; } else { if (seenNew.contains(object)) { // TODO(yulingtianxia): throw an error? @@ -385,7 +385,7 @@ class ParseObject extends ParseBase implements ParseCloneable { try { if (objectId != null) { final Uri url = getSanitisedUri(_client, '$_path/$objectId'); - final String body = '{\"$key\":{\"__op\":\"Delete\"}}'; + final String body = '{"$key":{"__op":"Delete"}}'; final ParseNetworkResponse result = await _client.put(url.toString(), data: body); final ParseResponse response = handleResponse( @@ -411,7 +411,7 @@ class ParseObject extends ParseBase implements ParseCloneable { Future query(String query, {ProgressCallback? progressCallback}) async { try { - final Uri url = getSanitisedUri(_client, '$_path', query: query); + final Uri url = getSanitisedUri(_client, _path, query: query); final ParseNetworkResponse result = await _client.get( url.toString(), onReceiveProgress: progressCallback, @@ -425,7 +425,7 @@ class ParseObject extends ParseBase implements ParseCloneable { Future distinct(String query) async { try { - final Uri url = getSanitisedUri(_client, '$_aggregatepath', query: query); + final Uri url = getSanitisedUri(_client, _aggregatepath, query: query); final ParseNetworkResponse result = await _client.get(url.toString()); return handleResponse( this, result, ParseApiRQ.query, _debug, parseClassName); @@ -456,7 +456,7 @@ class ParseObject extends ParseBase implements ParseCloneable { throw 'can not fetch without a objectId'; } - final ParseResponse response = await this.getObject(this.objectId!); + final ParseResponse response = await getObject(objectId!); if (response.success && response.results != null) { return response.results!.first; diff --git a/packages/dart/lib/src/objects/parse_relation.dart b/packages/dart/lib/src/objects/parse_relation.dart index 2f3721f8f..7c117e5d4 100644 --- a/packages/dart/lib/src/objects/parse_relation.dart +++ b/packages/dart/lib/src/objects/parse_relation.dart @@ -26,7 +26,7 @@ class ParseRelation { //The key of the relation in the parent object. String _key = ''; //For offline caching, we keep track of every object we've known to be in the relation. - Set? _knownObjects = Set(); + Set? _knownObjects = {}; QueryBuilder getQuery() { return QueryBuilder(ParseObject(_targetClass!)) diff --git a/packages/dart/lib/src/objects/parse_user.dart b/packages/dart/lib/src/objects/parse_user.dart index dc386d9e6..63a24e9ef 100644 --- a/packages/dart/lib/src/objects/parse_user.dart +++ b/packages/dart/lib/src/objects/parse_user.dart @@ -130,7 +130,7 @@ class ParseUser extends ParseObject implements ParseCloneable { } try { - final Uri url = getSanitisedUri(_client, '$keyEndPointUserName'); + final Uri url = getSanitisedUri(_client, keyEndPointUserName); final ParseNetworkResponse response = await _client.get( url.toString(), options: ParseNetworkOptions(headers: headers), @@ -185,7 +185,7 @@ class ParseUser extends ParseObject implements ParseCloneable { } } - final Uri url = getSanitisedUri(_client, '$path'); + final Uri url = getSanitisedUri(_client, path); final String body = json.encode(toJson(forApiRQ: true)); _saveChanges(); final String? installationId = await _getInstallationId(); @@ -219,7 +219,7 @@ class ParseUser extends ParseObject implements ParseCloneable { keyVarPassword: password! }; final String? installationId = await _getInstallationId(); - final Uri url = getSanitisedUri(_client, '$keyEndPointLogin'); + final Uri url = getSanitisedUri(_client, keyEndPointLogin); _saveChanges(); final ParseNetworkResponse response = await _client.post( url.toString(), @@ -245,7 +245,7 @@ class ParseUser extends ParseObject implements ParseCloneable { {bool doNotSendInstallationID = false}) async { forgetLocalSession(); try { - final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); + final Uri url = getSanitisedUri(_client, keyEndPointUsers); const Uuid uuid = Uuid(); final String? installationId = await _getInstallationId(); @@ -290,7 +290,7 @@ class ParseUser extends ParseObject implements ParseCloneable { Future _loginWith(String provider, Object authData, {bool doNotSendInstallationID = false}) async { try { - final Uri url = getSanitisedUri(_client, '$keyEndPointUsers'); + final Uri url = getSanitisedUri(_client, keyEndPointUsers); final String? installationId = await _getInstallationId(); final Map body = toJson(forApiRQ: true); body['authData'] = {provider: authData}; @@ -324,7 +324,7 @@ class ParseUser extends ParseObject implements ParseCloneable { } try { - final Uri url = getSanitisedUri(_client, '$keyEndPointLogout'); + final Uri url = getSanitisedUri(_client, keyEndPointLogout); final ParseNetworkResponse response = await _client.post( url.toString(), options: ParseNetworkOptions( @@ -440,7 +440,7 @@ class ParseUser extends ParseObject implements ParseCloneable { securityContext: ParseCoreData().securityContext); try { - final Uri url = getSanitisedUri(_client, '$path'); + final Uri url = getSanitisedUri(_client, path); final ParseNetworkResponse response = await _client.get(url.toString()); final ParseResponse parseResponse = handleResponse( emptyUser, response, ParseApiRQ.getAll, _debug, keyClassUser); diff --git a/packages/dart/lib/src/objects/response/parse_exception_response.dart b/packages/dart/lib/src/objects/response/parse_exception_response.dart index f2e6faf19..aea23d599 100644 --- a/packages/dart/lib/src/objects/response/parse_exception_response.dart +++ b/packages/dart/lib/src/objects/response/parse_exception_response.dart @@ -24,5 +24,4 @@ ParseResponse buildParseResponseWithException(Exception exception) { return ParseResponse( error: ParseError(message: exception.toString(), exception: exception)); - ; } 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 dec3e91b9..d36d8dd98 100644 --- a/packages/dart/lib/src/objects/response/parse_response_builder.dart +++ b/packages/dart/lib/src/objects/response/parse_response_builder.dart @@ -79,11 +79,11 @@ class _ParseResponseBuilder { } } } - } else if (result is Map) { - final Map map = result as Map; + } else if (result is Map) { + final Map map = result; if (object is Parse) { response.result = map; - } else if (map != null && map.length == 1 && map.containsKey('results')) { + } else if (map.length == 1 && map.containsKey('results')) { final List results = map['results']; if (results[0] is String) { response.results = results; @@ -95,7 +95,7 @@ class _ParseResponseBuilder { response.result = items; response.count = items.length; } - } else if (map != null && map.length == 2 && map.containsKey('count')) { + } else if (map.length == 2 && map.containsKey('count')) { final List results = [map['count']]; response.results = results; response.result = results; @@ -127,7 +127,7 @@ class _ParseResponseBuilder { return object.clone(map); } else if (object is ParseObject) { // Merge unsaved changes and response. - final Map unsaved = Map(); + final Map unsaved = {}; unsaved.addAll(object._unsavedChanges); unsaved.forEach((String k, dynamic v) { if (map[k] != null && map[k] != v) { @@ -145,6 +145,6 @@ class _ParseResponseBuilder { } bool isHealthCheck(ParseNetworkResponse apiResponse) { - return ['{\"status\":\"ok\"}', 'OK'].contains(apiResponse.data); + return ['{"status":"ok"}', 'OK'].contains(apiResponse.data); } } diff --git a/packages/dart/lib/src/utils/parse_decoder.dart b/packages/dart/lib/src/utils/parse_decoder.dart index b3f14c1a6..331f1173a 100644 --- a/packages/dart/lib/src/utils/parse_decoder.dart +++ b/packages/dart/lib/src/utils/parse_decoder.dart @@ -9,7 +9,7 @@ List _convertJSONArrayToList(List array) { } Map _convertJSONObjectToMap(Map object) { - final Map map = Map(); + final Map map = {}; object.forEach((String key, dynamic value) { map.putIfAbsent(key, () => parseDecode(value)); }); @@ -38,7 +38,7 @@ dynamic parseDecode(dynamic value) { return value; } - if (!(value is Map)) { + if (value is! Map) { return value; } diff --git a/packages/dart/lib/src/utils/parse_live_list.dart b/packages/dart/lib/src/utils/parse_live_list.dart index fb6a74cd5..5547d62e5 100644 --- a/packages/dart/lib/src/utils/parse_live_list.dart +++ b/packages/dart/lib/src/utils/parse_live_list.dart @@ -129,11 +129,12 @@ class ParseLiveList { Future _runQuery() async { final QueryBuilder query = QueryBuilder.copy(_query); - if (_debug) + if (_debug) { print('ParseLiveList: lazyLoading is ${_lazyLoading ? 'on' : 'off'}'); + } if (_lazyLoading) { final List keys = _preloadedColumns.toList(); - if (_lazyLoading && query.limiters.containsKey('order')) + if (_lazyLoading && query.limiters.containsKey('order')) { keys.addAll( query.limiters['order'].toString().split(',').map((String string) { if (string.startsWith('-')) { @@ -142,6 +143,7 @@ class ParseLiveList { return string; }), ); + } query.keysToReturn(keys); } return await query.query(); @@ -556,7 +558,7 @@ class ParseLiveListElement { {bool loaded = false, Map? updatedSubItems}) : _loaded = loaded { _updatedSubItems = - _toSubscriptionMap(updatedSubItems ?? Map()); + _toSubscriptionMap(updatedSubItems ?? {}); if (_updatedSubItems.isNotEmpty) { _liveQuery = LiveQuery(); _subscribe(); @@ -575,7 +577,7 @@ class ParseLiveListElement { T get object => _object.clone(_object.toJson(full: true)); Map _toSubscriptionMap(Map map) { - final Map result = Map(); + final Map result = {}; for (String key in map.keys) { result.putIfAbsent(PathKey(key), () => _toSubscriptionMap(map[key])); } @@ -583,7 +585,7 @@ class ParseLiveListElement { } Map _toKeyMap(Map map) { - final Map result = Map(); + final Map result = {}; for (PathKey key in map.keys) { result.putIfAbsent(key.key, () => _toKeyMap(map[key])); } diff --git a/packages/flutter/CHANGELOG.md b/packages/flutter/CHANGELOG.md index 25ba814f6..6e2491075 100644 --- a/packages/flutter/CHANGELOG.md +++ b/packages/flutter/CHANGELOG.md @@ -1,3 +1,9 @@ +## [3.1.2](https://github.com/parse-community/Parse-SDK-Flutter/compare/flutter-3.1.1...flutter-3.1.2) + +### Refactoring + +* fix analyzer code style warnings ([#733](https://github.com/parse-community/Parse-SDK-Flutter/issues/733)) + ## [3.1.1](https://github.com/parse-community/Parse-SDK-Flutter/compare/V3.1.0...flutter-3.1.1) (2022-05-29) ### Bug Fixes diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart index 41583c797..e5aed5100 100644 --- a/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart +++ b/packages/flutter/example/lib/data/repositories/diet_plan/provider_api_diet_plan.dart @@ -13,7 +13,7 @@ class DietPlanProviderApi implements DietPlanProviderContract { @override Future addAll(List items) async { - final List responses = List(); + final List responses = []; for (final DietPlan item in items) { final ApiResponse response = await add(item); @@ -57,7 +57,7 @@ class DietPlanProviderApi implements DietPlanProviderContract { @override Future updateAll(List items) async { - final List responses = List(); + final List responses = []; for (final DietPlan item in items) { final ApiResponse response = await update(item); diff --git a/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart b/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart index 4528ead5f..97a0e412b 100644 --- a/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart +++ b/packages/flutter/example/lib/data/repositories/diet_plan/provider_db_diet_plan.dart @@ -26,7 +26,7 @@ class DietPlanProviderDB implements DietPlanProviderContract { @override Future addAll(List items) async { - final List itemsInDb = List(); + final List itemsInDb = []; for (final DietPlan item in items) { final ApiResponse response = await add(item); @@ -45,9 +45,9 @@ class DietPlanProviderDB implements DietPlanProviderContract { @override Future getAll() async { - final List foodItems = List(); + final List foodItems = []; - final List sortOrders = List(); + final List sortOrders = []; sortOrders.add(SortOrder(keyName)); final Finder finder = Finder(sortOrders: sortOrders); final List>> records = @@ -82,7 +82,7 @@ class DietPlanProviderDB implements DietPlanProviderContract { @override Future getNewerThan(DateTime date) async { - final List foodItems = List(); + final List foodItems = []; final Finder finder = Finder( filter: @@ -113,7 +113,7 @@ class DietPlanProviderDB implements DietPlanProviderContract { @override Future updateAll(List items) async { - final List updatedItems = List(); + final List updatedItems = []; for (final DietPlan item in items) { final ApiResponse response = await update(item); @@ -145,7 +145,7 @@ class DietPlanProviderDB implements DietPlanProviderContract { } Map convertItemToStorageMap(DietPlan item) { - final Map values = Map(); + final Map values = {}; // ignore: invalid_use_of_protected_member values['value'] = json.jsonEncode(item.toJson(full: true)); values[keyVarObjectId] = item.objectId; diff --git a/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart b/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart index be2a615bb..c40e3b368 100644 --- a/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart +++ b/packages/flutter/example/lib/data/repositories/user/provider_db_user.dart @@ -82,7 +82,7 @@ class UserProviderDB implements UserProviderContract { void logout(User user) {} Map convertItemToStorageMap(User item) { - final Map values = Map(); + final Map values = {}; // ignore: invalid_use_of_protected_member values['value'] = json.jsonEncode(item.toJson(full: true)); values[keyVarObjectId] = item.objectId; diff --git a/packages/flutter/example/lib/main.dart b/packages/flutter/example/lib/main.dart index 003b9d850..cabbc552e 100644 --- a/packages/flutter/example/lib/main.dart +++ b/packages/flutter/example/lib/main.dart @@ -1,3 +1,5 @@ +// ignore_for_file: avoid_print + import 'dart:convert'; import 'dart:io'; @@ -16,7 +18,7 @@ import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; void main() { _setTargetPlatformForDesktop(); - runApp(MyApp()); + runApp(const MyApp()); } void _setTargetPlatformForDesktop() { @@ -33,6 +35,8 @@ void _setTargetPlatformForDesktop() { } class MyApp extends StatefulWidget { + const MyApp({Key key}) : super(key: key); + @override _MyAppState createState() => _MyAppState(); } @@ -56,7 +60,7 @@ class _MyAppState extends State { appBar: AppBar( title: const Text('Plugin example app'), ), - body: Center( + body: const Center( //child: Text(text), child: DecisionPage(), //child: HomePage(), diff --git a/packages/flutter/example/lib/pages/decision_page.dart b/packages/flutter/example/lib/pages/decision_page.dart index 33788cfd6..da97929b9 100644 --- a/packages/flutter/example/lib/pages/decision_page.dart +++ b/packages/flutter/example/lib/pages/decision_page.dart @@ -7,6 +7,8 @@ import 'home_page.dart'; import 'login_page.dart'; class DecisionPage extends StatefulWidget { + const DecisionPage({Key key}) : super(key: key); + @override _DecisionPageState createState() => _DecisionPageState(); } @@ -26,20 +28,18 @@ class _DecisionPageState extends State { Widget build(BuildContext context) { return Scaffold( body: Center( - child: Container( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - _showLogo(), - const SizedBox( - height: 20, - ), - Center( - child: Text(_parseServerState), - ), - ], - ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + _showLogo(), + const SizedBox( + height: 20, + ), + Center( + child: Text(_parseServerState), + ), + ], ), ), ); @@ -69,7 +69,7 @@ class _DecisionPageState extends State { if (user != null) { _redirectToPage(context, HomePage(DietPlanProviderApi())); } else { - _redirectToPage(context, LoginPage()); + _redirectToPage(context, const LoginPage()); } } else { setState(() { diff --git a/packages/flutter/example/lib/pages/home_page.dart b/packages/flutter/example/lib/pages/home_page.dart index 4515e9f7f..31298dec3 100644 --- a/packages/flutter/example/lib/pages/home_page.dart +++ b/packages/flutter/example/lib/pages/home_page.dart @@ -8,7 +8,7 @@ import 'package:flutter_plugin_example/data/repositories/diet_plan/contract_prov import 'package:parse_server_sdk/parse_server_sdk.dart'; class HomePage extends StatefulWidget { - const HomePage(this._dietPlanProvider); + const HomePage(this._dietPlanProvider, {Key key}) : super(key: key); final DietPlanProviderContract _dietPlanProvider; @@ -40,7 +40,7 @@ class _HomePageState extends State { automaticallyImplyLeading: false, title: const Text('Parse Server demo'), actions: [ - FlatButton( + TextButton( child: const Text('Logout', style: TextStyle(fontSize: 17.0, color: Colors.white)), onPressed: () async { diff --git a/packages/flutter/example/lib/pages/login_page.dart b/packages/flutter/example/lib/pages/login_page.dart index 54d3fc84e..c91ab0286 100644 --- a/packages/flutter/example/lib/pages/login_page.dart +++ b/packages/flutter/example/lib/pages/login_page.dart @@ -1,10 +1,14 @@ +// ignore_for_file: avoid_print + import 'package:flutter/material.dart'; import 'package:flutter_plugin_example/data/model/user.dart'; import 'package:parse_server_sdk/parse_server_sdk.dart'; -enum FormMode { LOGIN, SIGNUP } +enum FormMode { login, signUp } class LoginPage extends StatefulWidget { + const LoginPage({Key key}) : super(key: key); + @override _LoginPageState createState() => _LoginPageState(); } @@ -17,7 +21,7 @@ class _LoginPageState extends State { String _errorMessage; // Initial form is login form - FormMode _formMode = FormMode.LOGIN; + FormMode _formMode = FormMode.login; bool _isLoading; // Check if form is valid before perform login or signup @@ -41,7 +45,7 @@ class _LoginPageState extends State { ParseResponse response; try { - if (_formMode == FormMode.LOGIN) { + if (_formMode == FormMode.login) { response = await user.login(); print('Signed in'); } else { @@ -52,7 +56,7 @@ class _LoginPageState extends State { _isLoading = false; }); if (response.success) { - if (_formMode == FormMode.LOGIN) { + if (_formMode == FormMode.login) { Navigator.pop(context, true); } } else { @@ -82,7 +86,7 @@ class _LoginPageState extends State { _formKey.currentState.reset(); _errorMessage = ''; setState(() { - _formMode = FormMode.SIGNUP; + _formMode = FormMode.signUp; }); } @@ -90,7 +94,7 @@ class _LoginPageState extends State { _formKey.currentState.reset(); _errorMessage = ''; setState(() { - _formMode = FormMode.LOGIN; + _formMode = FormMode.login; }); } @@ -116,7 +120,7 @@ class _LoginPageState extends State { if (_isLoading) { return const Center(child: CircularProgressIndicator()); } - return Container( + return const SizedBox( height: 0.0, width: 0.0, ); @@ -213,13 +217,13 @@ class _LoginPageState extends State { } Widget _showSecondaryButton() { - return FlatButton( - child: _formMode == FormMode.LOGIN + return TextButton( + child: _formMode == FormMode.login ? const Text('Create an account', style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.w300)) : const Text('Have an account? Sign in', style: TextStyle(fontSize: 18.0, fontWeight: FontWeight.w300)), - onPressed: _formMode == FormMode.LOGIN + onPressed: _formMode == FormMode.login ? _changeFormToSignUp : _changeFormToLogin, ); @@ -230,12 +234,14 @@ class _LoginPageState extends State { padding: const EdgeInsets.fromLTRB(0.0, 45.0, 0.0, 0.0), child: SizedBox( height: 40.0, - child: RaisedButton( - elevation: 5.0, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(30.0)), - color: Colors.blue, - child: _formMode == FormMode.LOGIN + child: ElevatedButton( + style: ElevatedButton.styleFrom( + primary: Colors.blue, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(30.0)), + elevation: 5.0, + ), + child: _formMode == FormMode.login ? const Text('Login', style: TextStyle(fontSize: 20.0, color: Colors.white)) : const Text('Create account', diff --git a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart index a0f95f909..dcd1a9d68 100644 --- a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart +++ b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_api_test.dart @@ -10,7 +10,7 @@ import '../repository_mock_utils.dart'; // ignore_for_file: invalid_use_of_protected_member void main() { DietPlanProviderContract repository; - SharedPreferences.setMockInitialValues(Map()); + SharedPreferences.setMockInitialValues({}); Future getRepository() async { repository ??= DietPlanProviderApi(); @@ -49,7 +49,7 @@ void main() { test('addAll DietPlan from API', () async { // Given - final List actual = List(); + final List actual = []; final DietPlan item1 = getDummyDietPlan(); item1['objectId'] = null; item1.protein = 5; @@ -117,7 +117,7 @@ void main() { }); test('getAll DietPlan from API', () async { - final List actual = List(); + final List actual = []; final DietPlan item1 = getDummyDietPlan(); item1['objectId'] = null; @@ -162,7 +162,7 @@ void main() { test('updateAll DietPlan from API', () async { // Given - final List actual = List(); + final List actual = []; final DietPlan item1 = getDummyDietPlan(); item1['objectId'] = null; diff --git a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart index 89c99187b..3c5cc9523 100644 --- a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart +++ b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_db_test.dart @@ -11,7 +11,7 @@ import '../repository_mock_utils.dart'; void main() { DietPlanProviderContract repository; - SharedPreferences.setMockInitialValues(Map()); + SharedPreferences.setMockInitialValues({}); StoreRef> _getStore(Database database) { final StoreRef> store = @@ -61,7 +61,7 @@ void main() { test('addAll DietPlan from DB', () async { // Given const String objectIdPrefix = '12345abc'; - final List actual = List(); + final List actual = []; final DietPlan item1 = getDummyDietPlan(); item1.objectId = '${objectIdPrefix}0'; @@ -104,9 +104,7 @@ void main() { const String objectIdPrefix = '12345abc'; final DietPlan item1 = getDummyDietPlan()..objectId = '${objectIdPrefix}0'; final DietPlan item2 = getDummyDietPlan()..objectId = '${objectIdPrefix}1'; - final List actual = List() - ..add(item1) - ..add(item2); + final List actual = [item1, item2]; // When final ApiResponse response = await repository.addAll(actual); @@ -170,7 +168,7 @@ void main() { // Given const String objectIdPrefix = '12345abc'; - final List actual = List(); + final List actual = []; final DietPlan item1 = getDummyDietPlan(); item1.objectId = '${objectIdPrefix}0'; actual.add(item1); diff --git a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_test.dart b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_test.dart index 540d32016..4d959c1db 100644 --- a/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_test.dart +++ b/packages/flutter/example/test/data/repository/diet_plan/repository_diet_plan_test.dart @@ -10,7 +10,7 @@ import '../repository_mock_utils.dart'; void main() { DietPlanRepository repository; - SharedPreferences.setMockInitialValues(Map()); + SharedPreferences.setMockInitialValues({}); DietPlanProviderContract apiRepository; DietPlanProviderContract dbRepository; @@ -21,9 +21,7 @@ void main() { const String objectIdPrefix = '12345abc'; final DietPlan item1 = getDummyDietPlan()..objectId = '${objectIdPrefix}0'; final DietPlan item2 = getDummyDietPlan()..objectId = '${objectIdPrefix}1'; - final List mockList = List() - ..add(item1) - ..add(item2); + final List mockList = [item1, item2]; when(repositoryApi.add(any)).thenAnswer((_) async => Future.value( diff --git a/packages/flutter/example_livelist/lib/main.dart b/packages/flutter/example_livelist/lib/main.dart index f7c709189..c9881962e 100644 --- a/packages/flutter/example_livelist/lib/main.dart +++ b/packages/flutter/example_livelist/lib/main.dart @@ -3,9 +3,11 @@ import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; import 'application_constants.dart'; -void main() => runApp(MyApp()); +void main() => runApp(const MyApp()); class MyApp extends StatefulWidget { + const MyApp({Key? key}) : super(key: key); + @override _MyAppState createState() => _MyAppState(); } @@ -21,10 +23,11 @@ class _MyAppState extends State { initData().then((bool success) { setState(() { initFailed = !success; - if (success) + if (success) { _queryBuilder = QueryBuilder(ParseObject('Test')) ..orderByAscending('order') ..whereNotEqualTo('show', false); + } }); }).catchError((dynamic _) { setState(() { diff --git a/packages/flutter/lib/parse_server_sdk.dart b/packages/flutter/lib/parse_server_sdk.dart index 8844aa7f4..a13cc55c1 100644 --- a/packages/flutter/lib/parse_server_sdk.dart +++ b/packages/flutter/lib/parse_server_sdk.dart @@ -6,7 +6,6 @@ import 'dart:ui' as ui; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:flutter/material.dart'; -import 'package:flutter/widgets.dart'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:parse_server_sdk/parse_server_sdk.dart' as sdk; import 'package:path/path.dart' as path; diff --git a/packages/flutter/lib/src/utils/parse_live_list.dart b/packages/flutter/lib/src/utils/parse_live_list.dart index 9cea74101..7c52b4678 100644 --- a/packages/flutter/lib/src/utils/parse_live_list.dart +++ b/packages/flutter/lib/src/utils/parse_live_list.dart @@ -284,8 +284,9 @@ class _ParseLiveListElementWidgetState sizeFactor: widget.sizeFactor, child: AnimatedSize( duration: widget.duration, - vsync: this, child: widget.childBuilder(context, _snapshot), + // ignore: deprecated_member_use + vsync: this, ), ); return result; diff --git a/packages/flutter/test/parse_client_configuration_test.dart b/packages/flutter/test/parse_client_configuration_test.dart index f2de6b5cc..6d4f38b95 100644 --- a/packages/flutter/test/parse_client_configuration_test.dart +++ b/packages/flutter/test/parse_client_configuration_test.dart @@ -3,7 +3,7 @@ import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { - SharedPreferences.setMockInitialValues(Map()); + SharedPreferences.setMockInitialValues({}); test('testBuilder', () async { await Parse().initialize('appId', 'serverUrl',