Skip to content

Commit 996621f

Browse files
committed
Enable some extra lints for compass app client
1 parent e36c642 commit 996621f

31 files changed

+65
-52
lines changed

compass_app/app/analysis_options.yaml

+6
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,10 @@ include: package:flutter_lints/flutter.yaml
22

33
linter:
44
rules:
5+
- combinators_ordering
6+
- directives_ordering
7+
- omit_local_variable_types
8+
- prefer_final_fields
9+
- prefer_final_in_for_each
10+
- prefer_final_locals
511
- prefer_relative_imports

compass_app/app/lib/config/dependencies.dart

+10-10
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,18 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:provider/single_child_widget.dart';
65
import 'package:provider/provider.dart';
6+
import 'package:provider/single_child_widget.dart';
77

8+
import '../data/repositories/activity/activity_repository.dart';
9+
import '../data/repositories/activity/activity_repository_local.dart';
10+
import '../data/repositories/activity/activity_repository_remote.dart';
811
import '../data/repositories/auth/auth_repository.dart';
912
import '../data/repositories/auth/auth_repository_dev.dart';
1013
import '../data/repositories/auth/auth_repository_remote.dart';
1114
import '../data/repositories/booking/booking_repository.dart';
1215
import '../data/repositories/booking/booking_repository_local.dart';
1316
import '../data/repositories/booking/booking_repository_remote.dart';
14-
import '../data/repositories/user/user_repository.dart';
15-
import '../data/repositories/user/user_repository_local.dart';
16-
import '../data/repositories/user/user_repository_remote.dart';
17-
import '../data/services/api/auth_api_client.dart';
18-
import '../data/services/local/local_data_service.dart';
19-
import '../data/services/shared_preferences_service.dart';
20-
import '../data/repositories/activity/activity_repository.dart';
21-
import '../data/repositories/activity/activity_repository_local.dart';
22-
import '../data/repositories/activity/activity_repository_remote.dart';
2317
import '../data/repositories/continent/continent_repository.dart';
2418
import '../data/repositories/continent/continent_repository_local.dart';
2519
import '../data/repositories/continent/continent_repository_remote.dart';
@@ -28,7 +22,13 @@ import '../data/repositories/destination/destination_repository_local.dart';
2822
import '../data/repositories/destination/destination_repository_remote.dart';
2923
import '../data/repositories/itinerary_config/itinerary_config_repository.dart';
3024
import '../data/repositories/itinerary_config/itinerary_config_repository_memory.dart';
25+
import '../data/repositories/user/user_repository.dart';
26+
import '../data/repositories/user/user_repository_local.dart';
27+
import '../data/repositories/user/user_repository_remote.dart';
3128
import '../data/services/api/api_client.dart';
29+
import '../data/services/api/auth_api_client.dart';
30+
import '../data/services/local/local_data_service.dart';
31+
import '../data/services/shared_preferences_service.dart';
3232
import '../domain/use_cases/booking/booking_create_use_case.dart';
3333
import '../domain/use_cases/booking/booking_share_use_case.dart';
3434

compass_app/app/lib/data/repositories/booking/booking_repository_remote.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class BookingRepositoryRemote implements BookingRepository {
2323
@override
2424
Future<Result<void>> createBooking(Booking booking) async {
2525
try {
26-
final BookingApiModel bookingApiModel = BookingApiModel(
26+
final bookingApiModel = BookingApiModel(
2727
startDate: booking.startDate,
2828
endDate: booking.endDate,
2929
name: '${booking.destination.name}, ${booking.destination.continent}',

compass_app/app/lib/data/services/api/api_client.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class ApiClient {
2222
HttpClient Function()? clientFactory,
2323
}) : _host = host ?? 'localhost',
2424
_port = port ?? 8080,
25-
_clientFactory = clientFactory ?? (() => HttpClient());
25+
_clientFactory = clientFactory ?? HttpClient.new;
2626

2727
final String _host;
2828
final int _port;

compass_app/app/lib/data/services/api/auth_api_client.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class AuthApiClient {
1616
HttpClient Function()? clientFactory,
1717
}) : _host = host ?? 'localhost',
1818
_port = port ?? 8080,
19-
_clientFactory = clientFactory ?? (() => HttpClient());
19+
_clientFactory = clientFactory ?? HttpClient.new;
2020

2121
final String _host;
2222
final int _port;

compass_app/app/lib/data/services/local/local_data_service.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,12 @@ class LocalDataService {
4848

4949
Future<List<Activity>> getActivities() async {
5050
final json = await _loadStringAsset(Assets.activities);
51-
return json.map<Activity>((json) => Activity.fromJson(json)).toList();
51+
return json.map<Activity>(Activity.fromJson).toList();
5252
}
5353

5454
Future<List<Destination>> getDestinations() async {
5555
final json = await _loadStringAsset(Assets.destinations);
56-
return json.map<Destination>((json) => Destination.fromJson(json)).toList();
56+
return json.map<Destination>(Destination.fromJson).toList();
5757
}
5858

5959
Future<List<Map<String, dynamic>>> _loadStringAsset(String asset) async {

compass_app/app/lib/domain/use_cases/booking/booking_share_use_case.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import 'package:flutter/material.dart';
66
import 'package:logging/logging.dart';
77
import 'package:share_plus/share_plus.dart';
88

9-
import '../../../utils/result.dart';
109
import '../../../ui/core/ui/date_format_start_end.dart';
10+
import '../../../utils/result.dart';
1111
import '../../models/booking/booking.dart';
1212

1313
typedef ShareFunction = Future<void> Function(String text);

compass_app/app/lib/main.dart

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,15 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:flutter/material.dart';
56
import 'package:flutter_localizations/flutter_localizations.dart';
67
import 'package:provider/provider.dart';
78

9+
import 'main_development.dart' as development;
10+
import 'routing/router.dart';
811
import 'ui/core/localization/applocalization.dart';
912
import 'ui/core/themes/theme.dart';
10-
import 'routing/router.dart';
11-
import 'package:flutter/material.dart';
12-
1313
import 'ui/core/ui/scroll_behavior.dart';
14-
import 'main_development.dart' as development;
1514

1615
/// Default main method
1716
void main() {

compass_app/app/lib/routing/router.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ import '../ui/activities/view_models/activities_viewmodel.dart';
1111
import '../ui/activities/widgets/activities_screen.dart';
1212
import '../ui/auth/login/view_models/login_viewmodel.dart';
1313
import '../ui/auth/login/widgets/login_screen.dart';
14-
import '../ui/booking/widgets/booking_screen.dart';
1514
import '../ui/booking/view_models/booking_viewmodel.dart';
15+
import '../ui/booking/widgets/booking_screen.dart';
1616
import '../ui/home/view_models/home_viewmodel.dart';
1717
import '../ui/home/widgets/home_screen.dart';
1818
import '../ui/results/view_models/results_viewmodel.dart';
@@ -137,8 +137,8 @@ GoRouter router(
137137
// From https://github.com/flutter/packages/blob/main/packages/go_router/example/lib/redirection.dart
138138
Future<String?> _redirect(BuildContext context, GoRouterState state) async {
139139
// if the user is not logged in, they need to login
140-
final bool loggedIn = await context.read<AuthRepository>().isAuthenticated;
141-
final bool loggingIn = state.matchedLocation == Routes.login;
140+
final loggedIn = await context.read<AuthRepository>().isAuthenticated;
141+
final loggingIn = state.matchedLocation == Routes.login;
142142
if (!loggedIn) {
143143
return Routes.login;
144144
}

compass_app/app/lib/ui/auth/logout/view_models/logout_viewmodel.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class LogoutViewModel {
2121
late Command0 logout;
2222

2323
Future<Result> _logout() async {
24-
var result = await _authLogoutRepository.logout();
24+
final result = await _authLogoutRepository.logout();
2525
switch (result) {
2626
case Ok<void>():
2727
// clear stored itinerary config

compass_app/app/lib/ui/booking/view_models/booking_viewmodel.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ import '../../../data/repositories/booking/booking_repository.dart';
99
import '../../../data/repositories/itinerary_config/itinerary_config_repository.dart';
1010
import '../../../domain/models/booking/booking.dart';
1111
import '../../../domain/models/itinerary_config/itinerary_config.dart';
12-
import '../../../utils/command.dart';
13-
import '../../../utils/result.dart';
1412
import '../../../domain/use_cases/booking/booking_create_use_case.dart';
1513
import '../../../domain/use_cases/booking/booking_share_use_case.dart';
14+
import '../../../utils/command.dart';
15+
import '../../../utils/result.dart';
1616

1717
class BookingViewModel extends ChangeNotifier {
1818
BookingViewModel({

compass_app/app/lib/ui/core/themes/dimens.dart

+6-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ abstract final class Dimens {
2929
EdgeInsets get edgeInsetsScreenSymmetric => EdgeInsets.symmetric(
3030
horizontal: paddingScreenHorizontal, vertical: paddingScreenVertical);
3131

32-
static final Dimens desktop = _DimensDesktop();
33-
static final Dimens mobile = _DimensMobile();
32+
static const Dimens desktop = _DimensDesktop();
33+
static const Dimens mobile = _DimensMobile();
3434

3535
/// Get dimensions definition based on screen size
3636
factory Dimens.of(BuildContext context) =>
@@ -50,6 +50,8 @@ final class _DimensMobile extends Dimens {
5050

5151
@override
5252
final double profilePictureSize = 64.0;
53+
54+
const _DimensMobile();
5355
}
5456

5557
/// Desktop/Web dimensions
@@ -62,4 +64,6 @@ final class _DimensDesktop extends Dimens {
6264

6365
@override
6466
final double profilePictureSize = 128.0;
67+
68+
const _DimensDesktop();
6569
}

compass_app/app/lib/ui/core/themes/theme.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'colors.dart';
6-
import '../ui/tag_chip.dart';
75
import 'package:flutter/material.dart';
86

7+
import '../ui/tag_chip.dart';
8+
import 'colors.dart';
9+
910
abstract final class AppTheme {
1011
static const _textTheme = TextTheme(
1112
headlineLarge: TextStyle(

compass_app/app/lib/ui/core/ui/search_bar.dart

+3-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ class _QueryText extends StatelessWidget {
8080
}
8181

8282
return Text(
83-
'$continent - ${dateFormatStartEnd(DateTimeRange(start: startDate, end: endDate))} - Guests: $guests',
83+
'$continent - '
84+
'${dateFormatStartEnd(DateTimeRange(start: startDate, end: endDate))} - '
85+
'Guests: $guests',
8486
textAlign: TextAlign.center,
8587
style: Theme.of(context).textTheme.bodyLarge,
8688
);

compass_app/app/lib/ui/core/ui/tag_chip.dart

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44

55
import 'dart:ui';
66

7-
import '../themes/colors.dart';
87
import 'package:flutter/material.dart';
98
import 'package:google_fonts/google_fonts.dart';
109

10+
import '../themes/colors.dart';
11+
1112
class TagChip extends StatelessWidget {
1213
const TagChip({
1314
super.key,
@@ -96,7 +97,7 @@ class TagChip extends StatelessWidget {
9697

9798
// Note: original Figma file uses Google Sans
9899
// which is not available on GoogleFonts
99-
_textStyle(BuildContext context) => GoogleFonts.openSans(
100+
TextStyle _textStyle(BuildContext context) => GoogleFonts.openSans(
100101
textStyle: TextStyle(
101102
fontWeight: FontWeight.w500,
102103
fontSize: fontSize,

compass_app/app/lib/ui/home/widgets/home_screen.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ class _Booking extends StatelessWidget {
169169
confirmDismiss: confirmDismiss,
170170
background: Container(
171171
color: AppColors.grey1,
172-
child: Row(
172+
child: const Row(
173173
mainAxisAlignment: MainAxisAlignment.end,
174174
children: [
175175
Padding(
176-
padding: const EdgeInsets.only(right: Dimens.paddingHorizontal),
176+
padding: EdgeInsets.only(right: Dimens.paddingHorizontal),
177177
child: Icon(Icons.delete),
178178
),
179179
],

compass_app/app/lib/ui/results/view_models/results_viewmodel.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:flutter/cupertino.dart';
56
import 'package:logging/logging.dart';
67

78
import '../../../data/repositories/destination/destination_repository.dart';
@@ -10,7 +11,6 @@ import '../../../domain/models/destination/destination.dart';
1011
import '../../../domain/models/itinerary_config/itinerary_config.dart';
1112
import '../../../utils/command.dart';
1213
import '../../../utils/result.dart';
13-
import 'package:flutter/cupertino.dart';
1414

1515
/// Results screen view model
1616
/// Based on https://docs.flutter.dev/get-started/fwe/state-management#using-mvvm-for-your-applications-architecture

compass_app/app/lib/ui/search_form/widgets/search_form_date.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import 'package:flutter/material.dart';
66

77
import '../../core/localization/applocalization.dart';
8+
import '../../core/themes/colors.dart';
89
import '../../core/themes/dimens.dart';
910
import '../../core/ui/date_format_start_end.dart';
10-
import '../../core/themes/colors.dart';
1111
import '../view_models/search_form_viewmodel.dart';
1212

1313
/// Date selection form field.

compass_app/app/lib/ui/search_form/widgets/search_form_screen.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import '../../core/themes/dimens.dart';
1010
import '../../core/ui/search_bar.dart';
1111
import '../../results/widgets/results_screen.dart';
1212
import '../view_models/search_form_viewmodel.dart';
13+
import 'search_form_continent.dart';
1314
import 'search_form_date.dart';
1415
import 'search_form_guests.dart';
15-
import 'search_form_continent.dart';
1616
import 'search_form_submit.dart';
1717

1818
/// Search form screen

compass_app/app/lib/utils/command.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ class Command0<T> extends Command<T> {
7979

8080
/// Executes the action.
8181
Future<void> execute() async {
82-
await _execute(() => _action());
82+
await _execute(_action);
8383
}
8484
}
8585

compass_app/app/test/data/repositories/destination/destination_repository_local_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:compass_app/data/repositories/destination/destination_repository_local.dart';
56
import 'package:compass_app/data/services/local/local_data_service.dart';
67
import 'package:compass_app/utils/result.dart';
7-
import 'package:compass_app/data/repositories/destination/destination_repository_local.dart';
88
import 'package:flutter_test/flutter_test.dart';
99

1010
import '../../../../testing/utils/result.dart';

compass_app/app/test/domain/use_cases/booking/booking_create_use_case_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:compass_app/domain/use_cases/booking/booking_create_use_case.dart';
65
import 'package:compass_app/domain/models/itinerary_config/itinerary_config.dart';
6+
import 'package:compass_app/domain/use_cases/booking/booking_create_use_case.dart';
77
import 'package:flutter_test/flutter_test.dart';
88

99
import '../../../../testing/fakes/repositories/fake_activities_repository.dart';

compass_app/app/test/domain/use_cases/booking/booking_share_use_case_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
import 'package:compass_app/domain/use_cases/booking/booking_share_use_case.dart';
65
import 'package:compass_app/domain/models/booking/booking.dart';
6+
import 'package:compass_app/domain/use_cases/booking/booking_share_use_case.dart';
77
import 'package:flutter_test/flutter_test.dart';
88

99
import '../../../../testing/models/activity.dart';

compass_app/app/test/ui/booking/booking_screen_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:compass_app/domain/models/itinerary_config/itinerary_config.dart';
56
import 'package:compass_app/domain/use_cases/booking/booking_create_use_case.dart';
67
import 'package:compass_app/domain/use_cases/booking/booking_share_use_case.dart';
7-
import 'package:compass_app/domain/models/itinerary_config/itinerary_config.dart';
88
import 'package:compass_app/ui/booking/view_models/booking_viewmodel.dart';
99
import 'package:compass_app/ui/booking/widgets/booking_screen.dart';
1010
import 'package:flutter/foundation.dart';

compass_app/app/test/ui/home/widgets/home_screen_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void main() {
3737
when(() => goRouter.push(any())).thenAnswer((_) => Future.value(null));
3838
});
3939

40-
loadWidget(WidgetTester tester) async {
40+
Future<void> loadWidget(WidgetTester tester) async {
4141
await testApp(
4242
tester,
4343
ChangeNotifierProvider.value(

compass_app/app/test/ui/search_form/view_models/search_form_viewmodel_test.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5+
import 'package:compass_app/ui/search_form/view_models/search_form_viewmodel.dart';
56
import 'package:flutter/material.dart';
67
import 'package:flutter_test/flutter_test.dart';
7-
import 'package:compass_app/ui/search_form/view_models/search_form_viewmodel.dart';
88

99
import '../../../../testing/fakes/repositories/fake_continent_repository.dart';
1010
import '../../../../testing/fakes/repositories/fake_itinerary_config_repository.dart';
@@ -28,7 +28,7 @@ void main() {
2828
});
2929

3030
test('Setting dateRange updates correctly', () {
31-
final DateTimeRange newDateRange = DateTimeRange(
31+
final newDateRange = DateTimeRange(
3232
start: DateTime(2024, 1, 1),
3333
end: DateTime(2024, 1, 31),
3434
);
@@ -59,7 +59,7 @@ void main() {
5959

6060
viewModel.guests = 2;
6161
viewModel.selectedContinent = 'CONTINENT';
62-
final DateTimeRange newDateRange = DateTimeRange(
62+
final newDateRange = DateTimeRange(
6363
start: DateTime(2024, 1, 1),
6464
end: DateTime(2024, 1, 31),
6565
);

compass_app/app/test/ui/search_form/widgets/search_form_date_test.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44

55
import 'package:compass_app/ui/search_form/view_models/search_form_viewmodel.dart';
66
import 'package:compass_app/ui/search_form/widgets/search_form_date.dart';
7-
import 'package:flutter_test/flutter_test.dart';
87
import 'package:flutter/material.dart';
8+
import 'package:flutter_test/flutter_test.dart';
99

1010
import '../../../../testing/app.dart';
1111
import '../../../../testing/fakes/repositories/fake_continent_repository.dart';

0 commit comments

Comments
 (0)