diff --git a/analysis_options.yaml b/analysis_options.yaml index d2b89b11..8acc3356 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -5,16 +5,11 @@ analyzer: linter: rules: - # Use parameter order as in json response - always_put_required_named_parameters_first: false - # Util classes avoid_classes_with_only_static_members: false avoid_redundant_argument_values: false - join_return_with_assignment: false - - non_constant_identifier_names: false + non_constant_identifier_names: false constant_identifier_names: false diff --git a/lib/models/ib/ib_content.dart b/lib/models/ib/ib_content.dart index e76df249..142f73a2 100644 --- a/lib/models/ib/ib_content.dart +++ b/lib/models/ib/ib_content.dart @@ -6,7 +6,7 @@ abstract class IbContent { } class IbTocItem extends IbContent { - IbTocItem({this.leading, @required String content, this.items}) + IbTocItem({@required String content, this.leading, this.items}) : super(content: content); final String leading; diff --git a/lib/services/API/assignments_api.dart b/lib/services/API/assignments_api.dart index ed971d7a..c6d1a780 100644 --- a/lib/services/API/assignments_api.dart +++ b/lib/services/API/assignments_api.dart @@ -48,8 +48,7 @@ class HttpAssignmentsApi implements AssignmentsApi { uri, headers: headers, ); - var assignments = Assignments.fromJson(jsonResponse); - return assignments; + return Assignments.fromJson(jsonResponse); } on ForbiddenException { throw Failure(Constants.UNAUTHORIZED); } on NotFoundException { @@ -107,8 +106,7 @@ class HttpAssignmentsApi implements AssignmentsApi { headers: headers, body: json, ); - var assignment = Assignment.fromJson(jsonResponse['data']); - return assignment; + return Assignment.fromJson(jsonResponse['data']); } on BadRequestException { throw Failure(Constants.INVALID_PARAMETERS); } on ForbiddenException { diff --git a/lib/services/API/collaborators_api.dart b/lib/services/API/collaborators_api.dart index 88f74358..6a054444 100644 --- a/lib/services/API/collaborators_api.dart +++ b/lib/services/API/collaborators_api.dart @@ -34,8 +34,7 @@ class HttpCollaboratorsApi implements CollaboratorsApi { uri, headers: headers, ); - var collaborators = Collaborators.fromJson(jsonResponse); - return collaborators; + return Collaborators.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHORIZED); } on NotFoundException { diff --git a/lib/services/API/contributors_api.dart b/lib/services/API/contributors_api.dart index 69b93487..c6f3b163 100644 --- a/lib/services/API/contributors_api.dart +++ b/lib/services/API/contributors_api.dart @@ -19,9 +19,7 @@ class HttpContributorsApi implements ContributorsApi { try { var _jsonResponse = await ApiUtils.get(_url, headers: headers); - var _listOfContributors = - circuitVerseContributorsFromJson(jsonEncode(_jsonResponse)); - return _listOfContributors; + return circuitVerseContributorsFromJson(jsonEncode(_jsonResponse)); } on FormatException { throw Failure(Constants.BAD_RESPONSE_FORMAT); } on Exception { diff --git a/lib/services/API/grades_api.dart b/lib/services/API/grades_api.dart index 81a7b12a..fdc88720 100644 --- a/lib/services/API/grades_api.dart +++ b/lib/services/API/grades_api.dart @@ -48,8 +48,7 @@ class HttpGradesApi implements GradesApi { headers: headers, body: json, ); - var grade = Grade.fromJson(jsonResponse['data']); - return grade; + return Grade.fromJson(jsonResponse['data']); } on ForbiddenException { throw Failure(Constants.UNAUTHORIZED); } on NotFoundException { diff --git a/lib/services/API/group_members_api.dart b/lib/services/API/group_members_api.dart index d7e6f777..f67df4cf 100644 --- a/lib/services/API/group_members_api.dart +++ b/lib/services/API/group_members_api.dart @@ -29,8 +29,7 @@ class HttpGroupMembersApi implements GroupMembersApi { uri, headers: headers, ); - var groupMembers = GroupMembers.fromJson(jsonResponse); - return groupMembers; + return GroupMembers.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHORIZED); } on NotFoundException { diff --git a/lib/services/API/groups_api.dart b/lib/services/API/groups_api.dart index e053817a..1b51f7f1 100644 --- a/lib/services/API/groups_api.dart +++ b/lib/services/API/groups_api.dart @@ -33,8 +33,7 @@ class HttpGroupsApi implements GroupsApi { uri, headers: headers, ); - var groups = Groups.fromJson(jsonResponse); - return groups; + return Groups.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHORIZED); } on Exception { @@ -53,8 +52,7 @@ class HttpGroupsApi implements GroupsApi { uri, headers: headers, ); - var groups = Groups.fromJson(jsonResponse); - return groups; + return Groups.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHORIZED); } on Exception { @@ -73,8 +71,7 @@ class HttpGroupsApi implements GroupsApi { uri, headers: headers, ); - var group = Group.fromJson(jsonResponse); - return group; + return Group.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on ForbiddenException { @@ -99,8 +96,7 @@ class HttpGroupsApi implements GroupsApi { headers: headers, body: json, ); - var group = Group.fromJson(jsonResponse); - return group; + return Group.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on Exception { @@ -121,8 +117,7 @@ class HttpGroupsApi implements GroupsApi { headers: headers, body: json, ); - var group = Group.fromJson(jsonResponse); - return group; + return Group.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on ForbiddenException { diff --git a/lib/services/API/projects_api.dart b/lib/services/API/projects_api.dart index 509aac5e..f8ed0b29 100644 --- a/lib/services/API/projects_api.dart +++ b/lib/services/API/projects_api.dart @@ -69,8 +69,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var projects = Projects.fromJson(jsonResponse); - return projects; + return Projects.fromJson(jsonResponse); } on Exception { throw Failure(Constants.GENERIC_FAILURE); } @@ -94,8 +93,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var projects = Projects.fromJson(jsonResponse); - return projects; + return Projects.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on NotFoundException { @@ -123,8 +121,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var projects = Projects.fromJson(jsonResponse); - return projects; + return Projects.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on Exception { @@ -150,8 +147,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var projects = Projects.fromJson(jsonResponse); - return projects; + return Projects.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on Exception { @@ -170,8 +166,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var project = Project.fromJson(jsonResponse); - return project; + return Project.fromJson(jsonResponse); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on ForbiddenException { @@ -207,8 +202,7 @@ class HttpProjectsApi implements ProjectsApi { headers: headers, body: json, ); - var project = Project.fromJson(jsonResponse['data']); - return project; + return Project.fromJson(jsonResponse['data']); } on BadRequestException { throw Failure(Constants.INVALID_PARAMETERS); } on UnauthorizedException { @@ -277,8 +271,7 @@ class HttpProjectsApi implements ProjectsApi { uri, headers: headers, ); - var project = Project.fromJson(jsonResponse['data']); - return project; + return Project.fromJson(jsonResponse['data']); } on UnauthorizedException { throw Failure(Constants.UNAUTHENTICATED); } on NotFoundException { diff --git a/lib/services/API/users_api.dart b/lib/services/API/users_api.dart index 10017c9d..fda38863 100644 --- a/lib/services/API/users_api.dart +++ b/lib/services/API/users_api.dart @@ -73,8 +73,7 @@ class HttpUsersApi implements UsersApi { headers: headers, body: json, ); - String token = jsonResponse['token']; - return token; + return jsonResponse['token']; } on ConflictException { throw Failure(Constants.USER_AUTH_USER_ALREADY_EXISTS); } on FormatException { @@ -99,8 +98,7 @@ class HttpUsersApi implements UsersApi { headers: headers, body: json, ); - String token = jsonResponse['token']; - return token; + return jsonResponse['token']; } on NotFoundException { throw Failure(Constants.USER_AUTH_USER_NOT_FOUND); } on FormatException { @@ -125,8 +123,7 @@ class HttpUsersApi implements UsersApi { headers: headers, body: json, ); - String token = jsonResponse['token']; - return token; + return jsonResponse['token']; } on ConflictException { throw Failure(Constants.USER_AUTH_USER_ALREADY_EXISTS); } on FormatException { @@ -146,8 +143,7 @@ class HttpUsersApi implements UsersApi { uri, headers: headers, ); - var user = User.fromJson(jsonResponse); - return user; + return User.fromJson(jsonResponse); } on FormatException { throw Failure(Constants.BAD_RESPONSE_FORMAT); } on NotFoundException { @@ -167,8 +163,7 @@ class HttpUsersApi implements UsersApi { uri, headers: headers, ); - var user = User.fromJson(jsonResponse); - return user; + return User.fromJson(jsonResponse); } on FormatException { throw Failure(Constants.BAD_RESPONSE_FORMAT); } on Exception { @@ -194,8 +189,7 @@ class HttpUsersApi implements UsersApi { headers: headers, body: json, ); - var user = User.fromJson(jsonResponse); - return user; + return User.fromJson(jsonResponse); } on FormatException { throw Failure(Constants.BAD_RESPONSE_FORMAT); } on Exception { diff --git a/lib/services/database_service.dart b/lib/services/database_service.dart index 92fffbd7..65f47f05 100644 --- a/lib/services/database_service.dart +++ b/lib/services/database_service.dart @@ -55,13 +55,12 @@ class DatabaseServiceImpl implements DatabaseService { Future isExpired(String key) async { var data = await getData(DatabaseBox.Metadata, key); - if (data == null || + return data == null || data.isBefore( - DateTime.now().subtract(Duration(hours: _timeoutHours)))) { - return true; - } - - return false; + DateTime.now().subtract( + Duration(hours: _timeoutHours), + ), + ); } @override diff --git a/lib/services/ib_engine_service.dart b/lib/services/ib_engine_service.dart index 9a4dc540..72e8acaf 100644 --- a/lib/services/ib_engine_service.dart +++ b/lib/services/ib_engine_service.dart @@ -152,8 +152,7 @@ class IbEngineServiceImpl implements IbEngineService { // Build Navigation _chapters = _buildNav(_chapters); - _ibChapters = _chapters; - return _ibChapters; + return _ibChapters = _chapters; } /// Recursively parses list of table of contents @@ -224,11 +223,7 @@ class IbEngineServiceImpl implements IbEngineService { var document = parse(content); var mdElement = document.getElementById('markdown-toc'); - if (mdElement != null) { - return _parseToc(mdElement); - } else { - return []; - } + return mdElement != null ? _parseToc(mdElement) : []; } /// Fetches Chapter of Contents from HTML Content @@ -236,11 +231,9 @@ class IbEngineServiceImpl implements IbEngineService { var document = parse(content); var mdElement = document.getElementById('chapter-contents-toc'); - if (mdElement != null) { - return _parseChapterContents(mdElement, root: true); - } else { - return []; - } + return mdElement != null + ? _parseChapterContents(mdElement, root: true) + : []; } /// Fetches "Rich" Page Content @@ -286,10 +279,9 @@ class IbEngineServiceImpl implements IbEngineService { var result = '$js\n$html'; // Replace local URLs with absolute - result = result.replaceAll(RegExp(r'(\.\.(\/\.\.)?)?(? getInstance() async { - _instance ??= LocalStorageService(); - _preferences ??= await SharedPreferences.getInstance(); - return _instance; + return _instance ??= LocalStorageService(); } dynamic _getFromDisk(String key) { diff --git a/lib/ui/components/cv_drawer_tile.dart b/lib/ui/components/cv_drawer_tile.dart index 94367f70..9bcf0578 100644 --- a/lib/ui/components/cv_drawer_tile.dart +++ b/lib/ui/components/cv_drawer_tile.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:mobile_app/cv_theme.dart'; class CVDrawerTile extends StatelessWidget { - const CVDrawerTile({Key key, @required this.title, this.iconData, this.color}) + const CVDrawerTile({@required this.title, this.iconData, this.color, Key key}) : super(key: key); final String title; diff --git a/lib/ui/components/cv_header.dart b/lib/ui/components/cv_header.dart index 1d1509ca..366dc9f1 100644 --- a/lib/ui/components/cv_header.dart +++ b/lib/ui/components/cv_header.dart @@ -3,7 +3,7 @@ import 'package:mobile_app/cv_theme.dart'; class CVHeader extends StatelessWidget { const CVHeader( - {Key key, @required this.title, this.subtitle, this.description}) + {@required this.title, this.subtitle, this.description, Key key}) : super(key: key); final String title; diff --git a/lib/ui/components/cv_html_editor.dart b/lib/ui/components/cv_html_editor.dart index 531d4893..df829f6c 100644 --- a/lib/ui/components/cv_html_editor.dart +++ b/lib/ui/components/cv_html_editor.dart @@ -4,10 +4,10 @@ import 'package:mobile_app/cv_theme.dart'; class CVHtmlEditor extends StatelessWidget { const CVHtmlEditor({ - Key key, @required this.editorKey, this.hasAttachment = true, this.height = 300, + Key key, }) : super(key: key); final GlobalKey editorKey; diff --git a/lib/ui/components/cv_outline_button.dart b/lib/ui/components/cv_outline_button.dart index a4abdb1a..a55d7d26 100644 --- a/lib/ui/components/cv_outline_button.dart +++ b/lib/ui/components/cv_outline_button.dart @@ -3,11 +3,11 @@ import 'package:mobile_app/cv_theme.dart'; class CVOutlineButton extends StatelessWidget { const CVOutlineButton({ - Key key, @required this.title, this.onPressed, this.isBodyText = false, this.isPrimaryDark = false, + Key key, }) : super(key: key); final String title; diff --git a/lib/ui/components/cv_primary_button.dart b/lib/ui/components/cv_primary_button.dart index f5538b57..b51ad234 100644 --- a/lib/ui/components/cv_primary_button.dart +++ b/lib/ui/components/cv_primary_button.dart @@ -3,12 +3,12 @@ import 'package:mobile_app/cv_theme.dart'; class CVPrimaryButton extends StatelessWidget { const CVPrimaryButton({ - Key key, @required this.title, this.onPressed, this.isBodyText = false, this.isPrimaryDark = false, this.padding = const EdgeInsets.all(8), + Key key, }) : super(key: key); final String title; diff --git a/lib/ui/components/cv_text_field.dart b/lib/ui/components/cv_text_field.dart index f18a5b70..3ece617d 100644 --- a/lib/ui/components/cv_text_field.dart +++ b/lib/ui/components/cv_text_field.dart @@ -8,7 +8,6 @@ class CVTextField extends StatelessWidget { /// /// When `maxLines` is not specified, it defaults to 1 const CVTextField({ - Key key, @required this.label, this.controller, this.type = TextInputType.text, @@ -23,6 +22,7 @@ class CVTextField extends StatelessWidget { ), this.focusNode, this.onFieldSubmitted, + Key key, }) : super(key: key); final String label; diff --git a/lib/ui/components/cv_typeahead_field.dart b/lib/ui/components/cv_typeahead_field.dart index 2150fae5..2cf2cc44 100644 --- a/lib/ui/components/cv_typeahead_field.dart +++ b/lib/ui/components/cv_typeahead_field.dart @@ -10,7 +10,6 @@ class CVTypeAheadField extends StatelessWidget { /// /// When `maxLines` is not specified, it defaults to 1 const CVTypeAheadField({ - Key key, @required this.label, this.type = TextInputType.text, this.action = TextInputAction.next, @@ -26,6 +25,7 @@ class CVTypeAheadField extends StatelessWidget { this.countryInstituteObject, this.controller, this.toggle, + Key key, }) : super(key: key); final String label; diff --git a/lib/ui/views/about/about_privacy_policy_view.dart b/lib/ui/views/about/about_privacy_policy_view.dart index 4ab9ae88..0fdc77a0 100644 --- a/lib/ui/views/about/about_privacy_policy_view.dart +++ b/lib/ui/views/about/about_privacy_policy_view.dart @@ -47,9 +47,9 @@ class AboutPrivacyPolicyView extends StatelessWidget { Widget _buildSection({ @required BuildContext context, + @required List content, String title = '', bool heading = false, - @required List content, }) { var style = heading ? Theme.of(context).textTheme.headline5 diff --git a/lib/ui/views/about/components/contributor_avatar.dart b/lib/ui/views/about/components/contributor_avatar.dart index ef48e023..f2d21232 100644 --- a/lib/ui/views/about/components/contributor_avatar.dart +++ b/lib/ui/views/about/components/contributor_avatar.dart @@ -5,7 +5,7 @@ import 'package:mobile_app/utils/url_launcher.dart'; import 'package:transparent_image/transparent_image.dart'; class ContributorAvatar extends StatelessWidget { - const ContributorAvatar({Key key, @required this.contributor}) + const ContributorAvatar({@required this.contributor, Key key}) : super(key: key); final CircuitVerseContributor contributor; diff --git a/lib/ui/views/base_view.dart b/lib/ui/views/base_view.dart index a48293b4..cfcc27ea 100644 --- a/lib/ui/views/base_view.dart +++ b/lib/ui/views/base_view.dart @@ -5,11 +5,11 @@ import 'package:provider/provider.dart'; class BaseView extends StatefulWidget { const BaseView({ - Key key, @required this.builder, this.onModelReady, this.onModelDestroy, this.model, + Key key, }) : super(key: key); final Widget Function(BuildContext context, T model, Widget child) builder; diff --git a/lib/ui/views/groups/components/group_card_button.dart b/lib/ui/views/groups/components/group_card_button.dart index ab6e6097..e3fdc0cb 100644 --- a/lib/ui/views/groups/components/group_card_button.dart +++ b/lib/ui/views/groups/components/group_card_button.dart @@ -2,10 +2,10 @@ import 'package:flutter/material.dart'; class CardButton extends StatelessWidget { const CardButton({ - Key key, @required this.onPressed, @required this.color, @required this.title, + Key key, }) : super(key: key); final VoidCallback onPressed; final Color color; diff --git a/lib/ui/views/ib/components/ib_pop_quiz_button.dart b/lib/ui/views/ib/components/ib_pop_quiz_button.dart index 72905134..774dfc38 100644 --- a/lib/ui/views/ib/components/ib_pop_quiz_button.dart +++ b/lib/ui/views/ib/components/ib_pop_quiz_button.dart @@ -2,9 +2,9 @@ import 'package:flutter/material.dart'; class IbPopQuizButton extends StatefulWidget { const IbPopQuizButton({ - Key key, @required this.content, @required this.isCorrect, + Key key, }) : super(key: key); final String content; diff --git a/lib/ui/views/projects/components/featured_project_card.dart b/lib/ui/views/projects/components/featured_project_card.dart index 4519dc72..1efae7eb 100644 --- a/lib/ui/views/projects/components/featured_project_card.dart +++ b/lib/ui/views/projects/components/featured_project_card.dart @@ -7,7 +7,7 @@ import 'package:transparent_image/transparent_image.dart'; class FeaturedProjectCard extends StatefulWidget { const FeaturedProjectCard( - {Key key, @required this.project, this.onViewPressed}) + {@required this.project, this.onViewPressed, Key key}) : super(key: key); final Project project; diff --git a/lib/utils/api_utils.dart b/lib/utils/api_utils.dart index 4de52920..221804b3 100644 --- a/lib/utils/api_utils.dart +++ b/lib/utils/api_utils.dart @@ -12,10 +12,12 @@ class ApiUtils { static http.Client client = http.Client(); /// Returns JSON GET response - static Future get(String uri, - {Map headers, - bool utfDecoder = false, - bool rawResponse = false}) async { + static Future get( + String uri, { + Map headers, + bool utfDecoder = false, + bool rawResponse = false, + }) async { try { final response = await client.get(Uri.parse(uri), headers: headers); @@ -23,9 +25,7 @@ class ApiUtils { return response.body; } - final jsonResponse = - ApiUtils.jsonResponse(response, utfDecoder: utfDecoder); - return jsonResponse; + return ApiUtils.jsonResponse(response, utfDecoder: utfDecoder); } on SocketException { throw Failure(Constants.NO_INTERNET_CONNECTION); } on HttpException { @@ -39,8 +39,7 @@ class ApiUtils { try { final response = await client.post(Uri.parse(uri), headers: headers, body: jsonEncode(body)); - final jsonResponse = ApiUtils.jsonResponse(response); - return jsonResponse; + return ApiUtils.jsonResponse(response); } on SocketException { throw Failure(Constants.NO_INTERNET_CONNECTION); } on HttpException { @@ -57,8 +56,7 @@ class ApiUtils { headers: headers, body: jsonEncode(body), ); - final jsonResponse = ApiUtils.jsonResponse(response); - return jsonResponse; + return ApiUtils.jsonResponse(response); } on SocketException { throw Failure(Constants.NO_INTERNET_CONNECTION); } on HttpException { @@ -75,8 +73,7 @@ class ApiUtils { headers: headers, body: jsonEncode(body), ); - final jsonResponse = ApiUtils.jsonResponse(response); - return jsonResponse; + return ApiUtils.jsonResponse(response); } on SocketException { throw Failure(Constants.NO_INTERNET_CONNECTION); } on HttpException { @@ -92,8 +89,7 @@ class ApiUtils { Uri.parse(uri), headers: headers, ); - final jsonResponse = ApiUtils.jsonResponse(response); - return jsonResponse; + return ApiUtils.jsonResponse(response); } on SocketException { throw Failure(Constants.NO_INTERNET_CONNECTION); } on HttpException { @@ -108,11 +104,10 @@ class ApiUtils { case 201: case 202: case 204: - var responseJson = response.body == '' + return response.body == '' ? {} : json.decode( utfDecoder ? utf8.decode(response.bodyBytes) : response.body); - return responseJson; case 400: throw BadRequestException(response.body); case 401: diff --git a/lib/utils/enum_values.dart b/lib/utils/enum_values.dart index 606a0a62..cac6b6da 100644 --- a/lib/utils/enum_values.dart +++ b/lib/utils/enum_values.dart @@ -5,7 +5,6 @@ class EnumValues { Map reverseMap; Map get reverse { - reverseMap ??= map.map((k, v) => MapEntry(v, k)); - return reverseMap; + return reverseMap ??= map.map((k, v) => MapEntry(v, k)); } } diff --git a/lib/utils/string_utils.dart b/lib/utils/string_utils.dart index 03d9bb47..0cc3510b 100644 --- a/lib/utils/string_utils.dart +++ b/lib/utils/string_utils.dart @@ -3,7 +3,6 @@ import 'package:html/parser.dart'; class StringUtils { static String parseHtmlString(String htmlString) { var document = parse(htmlString); - var parsedString = parse(document.body.text).documentElement.text; - return parsedString; + return parse(document.body.text).documentElement.text; } }