diff --git a/.github/workflows/static_analysis.yml b/.github/workflows/static_analysis.yml index a6365f5c98..5d0d690661 100644 --- a/.github/workflows/static_analysis.yml +++ b/.github/workflows/static_analysis.yml @@ -109,7 +109,7 @@ jobs: working-directory: ./mobile - name: Run DCM - run: dcm analyze lib + run: dcm analyze lib --fatal-style --fatal-warnings working-directory: ./mobile zizmor: diff --git a/mobile/analysis_options.yaml b/mobile/analysis_options.yaml index 7ca6b7a2b8..2c52595a26 100644 --- a/mobile/analysis_options.yaml +++ b/mobile/analysis_options.yaml @@ -146,6 +146,7 @@ dart_code_metrics: # - no-empty-block # - no-equal-then-else # - prefer-correct-test-file-name + - prefer-const-border-radius # - prefer-match-file-name # - prefer-return-await # - avoid-self-assignment @@ -290,7 +291,8 @@ dart_code_metrics: # Style # - prefer-trailing-comma # - unnecessary-trailing-comma - # - prefer-declaring-const-constructor + - prefer-declaring-const-constructor # - prefer-single-widget-per-file + - prefer-switch-expression # - prefer-prefixed-global-constants # - prefer-correct-callback-field-name diff --git a/mobile/integration_test/test_utils/login_helper.dart b/mobile/integration_test/test_utils/login_helper.dart index b3a867af68..cfbc5a9214 100644 --- a/mobile/integration_test/test_utils/login_helper.dart +++ b/mobile/integration_test/test_utils/login_helper.dart @@ -7,7 +7,7 @@ import 'general_helper.dart'; class ImmichTestLoginHelper { final WidgetTester tester; - ImmichTestLoginHelper(this.tester); + const ImmichTestLoginHelper(this.tester); Future waitForLoginScreen() async { await pumpUntilFound(tester, find.text("Login")); @@ -60,11 +60,11 @@ class ImmichTestLoginHelper { await tester.tap(button); } - Future assertLoginSuccess({int timeoutSeconds = 15}) async { + Future assertLoginSuccess() async { await pumpUntilFound(tester, find.text("home_page_building_timeline".tr())); } - Future assertLoginFailed({int timeoutSeconds = 15}) async { + Future assertLoginFailed() async { await pumpUntilFound(tester, find.text("login_form_failed_login".tr())); } } diff --git a/mobile/lib/constants/errors.dart b/mobile/lib/constants/errors.dart index 3d1f775033..0ee1195737 100644 --- a/mobile/lib/constants/errors.dart +++ b/mobile/lib/constants/errors.dart @@ -4,6 +4,8 @@ sealed class ImmichErrors { } class NoResponseDtoError extends ImmichErrors implements Exception { + const NoResponseDtoError(); + @override String toString() => "Response Dto is null"; } diff --git a/mobile/lib/domain/models/person.model.dart b/mobile/lib/domain/models/person.model.dart index 63b9f5c159..10453f768d 100644 --- a/mobile/lib/domain/models/person.model.dart +++ b/mobile/lib/domain/models/person.model.dart @@ -1,7 +1,7 @@ import 'dart:convert'; class Person { - Person({ + const Person({ required this.id, this.birthDate, required this.isHidden, diff --git a/mobile/lib/entities/asset.entity.dart b/mobile/lib/entities/asset.entity.dart index d8d2bd23c3..d754b11dc5 100644 --- a/mobile/lib/entities/asset.entity.dart +++ b/mobile/lib/entities/asset.entity.dart @@ -554,18 +554,12 @@ class Asset { }"""; } - static getVisibility(AssetVisibility visibility) { - switch (visibility) { - case AssetVisibility.timeline: - return AssetVisibilityEnum.timeline; - case AssetVisibility.archive: - return AssetVisibilityEnum.archive; - case AssetVisibility.hidden: - return AssetVisibilityEnum.hidden; - case AssetVisibility.locked: - return AssetVisibilityEnum.locked; - } - } + static getVisibility(AssetVisibility visibility) => switch (visibility) { + AssetVisibility.archive => AssetVisibilityEnum.archive, + AssetVisibility.hidden => AssetVisibilityEnum.hidden, + AssetVisibility.locked => AssetVisibilityEnum.locked, + AssetVisibility.timeline || _ => AssetVisibilityEnum.timeline, + }; } enum AssetType { diff --git a/mobile/lib/entities/store.entity.dart b/mobile/lib/entities/store.entity.dart index ed955352e2..c937697149 100644 --- a/mobile/lib/entities/store.entity.dart +++ b/mobile/lib/entities/store.entity.dart @@ -11,7 +11,7 @@ class SSLClientCertStoreVal { final Uint8List data; final String? password; - SSLClientCertStoreVal(this.data, this.password); + const SSLClientCertStoreVal(this.data, this.password); void save() { final b64Str = base64Encode(data); diff --git a/mobile/lib/infrastructure/repositories/api.repository.dart b/mobile/lib/infrastructure/repositories/api.repository.dart index 56c64c5512..15696c65b7 100644 --- a/mobile/lib/infrastructure/repositories/api.repository.dart +++ b/mobile/lib/infrastructure/repositories/api.repository.dart @@ -5,7 +5,7 @@ class ApiRepository { Future checkNull(Future future) async { final response = await future; - if (response == null) throw NoResponseDtoError(); + if (response == null) throw const NoResponseDtoError(); return response; } } diff --git a/mobile/lib/models/albums/album_viewer_page_state.model.dart b/mobile/lib/models/albums/album_viewer_page_state.model.dart index 10a8183ddc..9fd5da1b28 100644 --- a/mobile/lib/models/albums/album_viewer_page_state.model.dart +++ b/mobile/lib/models/albums/album_viewer_page_state.model.dart @@ -5,7 +5,7 @@ class AlbumViewerPageState { final String editTitleText; final String editDescriptionText; - AlbumViewerPageState({ + const AlbumViewerPageState({ required this.isEditAlbum, required this.editTitleText, required this.editDescriptionText, diff --git a/mobile/lib/models/albums/asset_selection_page_result.model.dart b/mobile/lib/models/albums/asset_selection_page_result.model.dart index 04934f7a72..2a4daba64a 100644 --- a/mobile/lib/models/albums/asset_selection_page_result.model.dart +++ b/mobile/lib/models/albums/asset_selection_page_result.model.dart @@ -4,7 +4,7 @@ import 'package:immich_mobile/entities/asset.entity.dart'; class AssetSelectionPageResult { final Set selectedAssets; - AssetSelectionPageResult({ + const AssetSelectionPageResult({ required this.selectedAssets, }); @override diff --git a/mobile/lib/models/auth/auth_state.model.dart b/mobile/lib/models/auth/auth_state.model.dart index fb65850f1d..0d8357d66d 100644 --- a/mobile/lib/models/auth/auth_state.model.dart +++ b/mobile/lib/models/auth/auth_state.model.dart @@ -7,7 +7,7 @@ class AuthState { final bool isAdmin; final String profileImagePath; - AuthState({ + const AuthState({ required this.deviceId, required this.userId, required this.userEmail, diff --git a/mobile/lib/models/auth/auxilary_endpoint.model.dart b/mobile/lib/models/auth/auxilary_endpoint.model.dart index 89aba60913..f49d0f692c 100644 --- a/mobile/lib/models/auth/auxilary_endpoint.model.dart +++ b/mobile/lib/models/auth/auxilary_endpoint.model.dart @@ -5,7 +5,7 @@ class AuxilaryEndpoint { final String url; final AuxCheckStatus status; - AuxilaryEndpoint({ + const AuxilaryEndpoint({ required this.url, required this.status, }); @@ -55,7 +55,7 @@ class AuxilaryEndpoint { class AuxCheckStatus { final String name; - AuxCheckStatus({ + const AuxCheckStatus({ required this.name, }); const AuxCheckStatus._(this.name); diff --git a/mobile/lib/models/auth/login_response.model.dart b/mobile/lib/models/auth/login_response.model.dart index f1398418ca..0aa9c0b349 100644 --- a/mobile/lib/models/auth/login_response.model.dart +++ b/mobile/lib/models/auth/login_response.model.dart @@ -13,7 +13,7 @@ class LoginResponse { final String userId; - LoginResponse({ + const LoginResponse({ required this.accessToken, required this.isAdmin, required this.name, diff --git a/mobile/lib/models/backup/available_album.model.dart b/mobile/lib/models/backup/available_album.model.dart index c75d6446d8..e34d2b1abe 100644 --- a/mobile/lib/models/backup/available_album.model.dart +++ b/mobile/lib/models/backup/available_album.model.dart @@ -4,7 +4,7 @@ class AvailableAlbum { final Album album; final int assetCount; final DateTime? lastBackup; - AvailableAlbum({ + const AvailableAlbum({ required this.album, required this.assetCount, this.lastBackup, diff --git a/mobile/lib/models/backup/current_upload_asset.model.dart b/mobile/lib/models/backup/current_upload_asset.model.dart index 787f117269..edaac06987 100644 --- a/mobile/lib/models/backup/current_upload_asset.model.dart +++ b/mobile/lib/models/backup/current_upload_asset.model.dart @@ -9,7 +9,7 @@ class CurrentUploadAsset { final int? fileSize; final bool? iCloudAsset; - CurrentUploadAsset({ + const CurrentUploadAsset({ required this.id, required this.fileCreatedAt, required this.fileName, diff --git a/mobile/lib/models/backup/success_upload_asset.model.dart b/mobile/lib/models/backup/success_upload_asset.model.dart index 045715e8cb..2b39dde5ea 100644 --- a/mobile/lib/models/backup/success_upload_asset.model.dart +++ b/mobile/lib/models/backup/success_upload_asset.model.dart @@ -5,7 +5,7 @@ class SuccessUploadAsset { final String remoteAssetId; final bool isDuplicate; - SuccessUploadAsset({ + const SuccessUploadAsset({ required this.candidate, required this.remoteAssetId, required this.isDuplicate, diff --git a/mobile/lib/models/download/download_state.model.dart b/mobile/lib/models/download/download_state.model.dart index edd2fa183e..c032c73dcd 100644 --- a/mobile/lib/models/download/download_state.model.dart +++ b/mobile/lib/models/download/download_state.model.dart @@ -10,7 +10,7 @@ class DownloadInfo { // enum final TaskStatus status; - DownloadInfo({ + const DownloadInfo({ required this.fileName, required this.progress, required this.status, @@ -71,7 +71,7 @@ class DownloadState { final TaskStatus downloadStatus; final Map taskProgress; final bool showProgress; - DownloadState({ + const DownloadState({ required this.downloadStatus, required this.taskProgress, required this.showProgress, diff --git a/mobile/lib/models/folder/recursive_folder.model.dart b/mobile/lib/models/folder/recursive_folder.model.dart index 5b54a2e1bf..62ec670fed 100644 --- a/mobile/lib/models/folder/recursive_folder.model.dart +++ b/mobile/lib/models/folder/recursive_folder.model.dart @@ -3,7 +3,7 @@ import 'package:immich_mobile/models/folder/root_folder.model.dart'; class RecursiveFolder extends RootFolder { final String name; - RecursiveFolder({ + const RecursiveFolder({ required this.name, required super.path, required super.subfolders, diff --git a/mobile/lib/models/folder/root_folder.model.dart b/mobile/lib/models/folder/root_folder.model.dart index 8f72a539c0..567093ecd5 100644 --- a/mobile/lib/models/folder/root_folder.model.dart +++ b/mobile/lib/models/folder/root_folder.model.dart @@ -4,7 +4,7 @@ class RootFolder { final List subfolders; final String path; - RootFolder({ + const RootFolder({ required this.subfolders, required this.path, }); diff --git a/mobile/lib/models/map/map_event.model.dart b/mobile/lib/models/map/map_event.model.dart index dd9fec06e6..a57fcb4c36 100644 --- a/mobile/lib/models/map/map_event.model.dart +++ b/mobile/lib/models/map/map_event.model.dart @@ -8,4 +8,6 @@ class MapAssetsInBoundsUpdated extends MapEvent { const MapAssetsInBoundsUpdated(this.assetRemoteIds); } -class MapCloseBottomSheet extends MapEvent {} +class MapCloseBottomSheet extends MapEvent { + const MapCloseBottomSheet(); +} diff --git a/mobile/lib/models/map/map_marker.model.dart b/mobile/lib/models/map/map_marker.model.dart index c9253a37cc..7ab925464a 100644 --- a/mobile/lib/models/map/map_marker.model.dart +++ b/mobile/lib/models/map/map_marker.model.dart @@ -4,7 +4,7 @@ import 'package:openapi/api.dart'; class MapMarker { final LatLng latLng; final String assetRemoteId; - MapMarker({ + const MapMarker({ required this.latLng, required this.assetRemoteId, }); diff --git a/mobile/lib/models/map/map_state.model.dart b/mobile/lib/models/map/map_state.model.dart index 973b925aa8..78747e770d 100644 --- a/mobile/lib/models/map/map_state.model.dart +++ b/mobile/lib/models/map/map_state.model.dart @@ -11,7 +11,7 @@ class MapState { final AsyncValue lightStyleFetched; final AsyncValue darkStyleFetched; - MapState({ + const MapState({ this.themeMode = ThemeMode.system, this.showFavoriteOnly = false, this.includeArchived = false, diff --git a/mobile/lib/models/memories/memory.model.dart b/mobile/lib/models/memories/memory.model.dart index 34691d3b55..c8451dda64 100644 --- a/mobile/lib/models/memories/memory.model.dart +++ b/mobile/lib/models/memories/memory.model.dart @@ -7,7 +7,7 @@ import 'package:immich_mobile/entities/asset.entity.dart'; class Memory { final String title; final List assets; - Memory({ + const Memory({ required this.title, required this.assets, }); diff --git a/mobile/lib/models/search/search_curated_content.model.dart b/mobile/lib/models/search/search_curated_content.model.dart index a3d74941b3..aff61097e2 100644 --- a/mobile/lib/models/search/search_curated_content.model.dart +++ b/mobile/lib/models/search/search_curated_content.model.dart @@ -14,7 +14,7 @@ class SearchCuratedContent { /// The id to lookup the asset from the server final String id; - SearchCuratedContent({ + const SearchCuratedContent({ required this.label, required this.id, this.subtitle, diff --git a/mobile/lib/models/search/search_result.model.dart b/mobile/lib/models/search/search_result.model.dart index f51353ad61..458a9b4abc 100644 --- a/mobile/lib/models/search/search_result.model.dart +++ b/mobile/lib/models/search/search_result.model.dart @@ -6,7 +6,7 @@ class SearchResult { final List assets; final int? nextPage; - SearchResult({ + const SearchResult({ required this.assets, this.nextPage, }); diff --git a/mobile/lib/models/search/search_result_page_state.model.dart b/mobile/lib/models/search/search_result_page_state.model.dart index 00895c4586..2fd4dcbcd3 100644 --- a/mobile/lib/models/search/search_result_page_state.model.dart +++ b/mobile/lib/models/search/search_result_page_state.model.dart @@ -8,7 +8,7 @@ class SearchResultPageState { final bool isSmart; final List searchResult; - SearchResultPageState({ + const SearchResultPageState({ required this.isLoading, required this.isSuccess, required this.isError, diff --git a/mobile/lib/models/server_info/server_info.model.dart b/mobile/lib/models/server_info/server_info.model.dart index 8a70e13883..aafab56e4c 100644 --- a/mobile/lib/models/server_info/server_info.model.dart +++ b/mobile/lib/models/server_info/server_info.model.dart @@ -13,7 +13,7 @@ class ServerInfo { final bool isNewReleaseAvailable; final String versionMismatchErrorMessage; - ServerInfo({ + const ServerInfo({ required this.serverVersion, required this.latestVersion, required this.serverFeatures, diff --git a/mobile/lib/pages/albums/albums.page.dart b/mobile/lib/pages/albums/albums.page.dart index 2a13ccccd7..3fc628afd3 100644 --- a/mobile/lib/pages/albums/albums.page.dart +++ b/mobile/lib/pages/albums/albums.page.dart @@ -105,7 +105,9 @@ class AlbumsPage extends HookConsumerWidget { color: context.colorScheme.onSurface.withAlpha(0), width: 0, ), - borderRadius: BorderRadius.circular(24), + borderRadius: const BorderRadius.all( + Radius.circular(24), + ), gradient: LinearGradient( colors: [ context.colorScheme.primary.withValues(alpha: 0.075), @@ -301,7 +303,9 @@ class QuickFilterButton extends StatelessWidget { ), shape: WidgetStateProperty.all( RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), side: BorderSide( color: context.colorScheme.onSurface.withAlpha(25), width: 1, @@ -334,8 +338,10 @@ class SortButton extends ConsumerWidget { style: MenuStyle( elevation: const WidgetStatePropertyAll(1), shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(24), + const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(24), + ), ), ), padding: const WidgetStatePropertyAll( @@ -384,8 +390,10 @@ class SortButton extends ConsumerWidget { : Colors.transparent, ), shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(24), + const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(24), + ), ), ), ), diff --git a/mobile/lib/pages/backup/backup_album_selection.page.dart b/mobile/lib/pages/backup/backup_album_selection.page.dart index c4124efb52..e51d259969 100644 --- a/mobile/lib/pages/backup/backup_album_selection.page.dart +++ b/mobile/lib/pages/backup/backup_album_selection.page.dart @@ -246,8 +246,10 @@ class BackupAlbumSelectionPage extends HookConsumerWidget { context: context, builder: (BuildContext context) { return AlertDialog( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), elevation: 5, title: Text( diff --git a/mobile/lib/pages/backup/backup_controller.page.dart b/mobile/lib/pages/backup/backup_controller.page.dart index 6cbf172ce5..ca094437ac 100644 --- a/mobile/lib/pages/backup/backup_controller.page.dart +++ b/mobile/lib/pages/backup/backup_controller.page.dart @@ -147,7 +147,9 @@ class BackupControllerPage extends HookConsumerWidget { padding: const EdgeInsets.only(top: 8.0), child: Card( shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), side: BorderSide( color: context.colorScheme.outlineVariant, width: 1, diff --git a/mobile/lib/pages/backup/failed_backup_status.page.dart b/mobile/lib/pages/backup/failed_backup_status.page.dart index 551555d75e..167b0f2ebd 100644 --- a/mobile/lib/pages/backup/failed_backup_status.page.dart +++ b/mobile/lib/pages/backup/failed_backup_status.page.dart @@ -42,9 +42,11 @@ class FailedBackupStatusPage extends HookConsumerWidget { vertical: 4, ), child: Card( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15), // if you need this - side: const BorderSide( + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(15), // if you need this + ), + side: BorderSide( color: Colors.black12, width: 1, ), diff --git a/mobile/lib/pages/common/app_log_detail.page.dart b/mobile/lib/pages/common/app_log_detail.page.dart index 1bfea44ba1..b88d6aeb3a 100644 --- a/mobile/lib/pages/common/app_log_detail.page.dart +++ b/mobile/lib/pages/common/app_log_detail.page.dart @@ -60,7 +60,9 @@ class AppLogDetailPage extends HookConsumerWidget { Container( decoration: BoxDecoration( color: context.colorScheme.surfaceContainerHigh, - borderRadius: BorderRadius.circular(15.0), + borderRadius: const BorderRadius.all( + Radius.circular(15.0), + ), ), child: Padding( padding: const EdgeInsets.all(8.0), @@ -99,7 +101,9 @@ class AppLogDetailPage extends HookConsumerWidget { Container( decoration: BoxDecoration( color: context.colorScheme.surfaceContainerHigh, - borderRadius: BorderRadius.circular(15.0), + borderRadius: const BorderRadius.all( + Radius.circular(15.0), + ), ), child: Padding( padding: const EdgeInsets.all(8.0), diff --git a/mobile/lib/pages/common/create_album.page.dart b/mobile/lib/pages/common/create_album.page.dart index f5c6321451..faf1671a9e 100644 --- a/mobile/lib/pages/common/create_album.page.dart +++ b/mobile/lib/pages/common/create_album.page.dart @@ -120,8 +120,10 @@ class CreateAlbumPage extends HookConsumerWidget { alignment: Alignment.centerLeft, padding: const EdgeInsets.symmetric(vertical: 24, horizontal: 16), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), backgroundColor: context.colorScheme.surfaceContainerHigh, ), diff --git a/mobile/lib/pages/common/download_panel.dart b/mobile/lib/pages/common/download_panel.dart index 5cc6e5b8d6..cc543c9e4e 100644 --- a/mobile/lib/pages/common/download_panel.dart +++ b/mobile/lib/pages/common/download_panel.dart @@ -90,8 +90,10 @@ class DownloadTaskTile extends StatelessWidget { width: context.width - 32, child: Card( clipBehavior: Clip.antiAlias, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(16), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(16), + ), ), child: ListTile( minVerticalPadding: 18, diff --git a/mobile/lib/pages/common/settings.page.dart b/mobile/lib/pages/common/settings.page.dart index 05c7606970..6fc4cf5d88 100644 --- a/mobile/lib/pages/common/settings.page.dart +++ b/mobile/lib/pages/common/settings.page.dart @@ -3,6 +3,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; +import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/widgets/settings/advanced_settings.dart'; import 'package:immich_mobile/widgets/settings/asset_list_settings/asset_list_settings.dart'; import 'package:immich_mobile/widgets/settings/asset_viewer_settings/asset_viewer_settings.dart'; @@ -11,7 +12,6 @@ import 'package:immich_mobile/widgets/settings/language_settings.dart'; import 'package:immich_mobile/widgets/settings/networking_settings/networking_settings.dart'; import 'package:immich_mobile/widgets/settings/notification_setting.dart'; import 'package:immich_mobile/widgets/settings/preference_settings/preference_setting.dart'; -import 'package:immich_mobile/routing/router.dart'; enum SettingSection { advanced( @@ -85,12 +85,13 @@ class SettingsPage extends StatelessWidget { centerTitle: false, title: const Text('settings').tr(), ), - body: context.isMobile ? _MobileLayout() : _TabletLayout(), + body: context.isMobile ? const _MobileLayout() : const _TabletLayout(), ); } } class _MobileLayout extends StatelessWidget { + const _MobileLayout(); @override Widget build(BuildContext context) { return ListView( @@ -147,6 +148,7 @@ class _MobileLayout extends StatelessWidget { } class _TabletLayout extends HookWidget { + const _TabletLayout(); @override Widget build(BuildContext context) { final selectedSection = diff --git a/mobile/lib/pages/editing/edit.page.dart b/mobile/lib/pages/editing/edit.page.dart index 39524df024..d37941f4fe 100644 --- a/mobile/lib/pages/editing/edit.page.dart +++ b/mobile/lib/pages/editing/edit.page.dart @@ -124,7 +124,9 @@ class EditImagePage extends ConsumerWidget { ), child: Container( decoration: BoxDecoration( - borderRadius: BorderRadius.circular(7), + borderRadius: const BorderRadius.all( + Radius.circular(7), + ), boxShadow: [ BoxShadow( color: Colors.black.withValues(alpha: 0.2), @@ -135,7 +137,9 @@ class EditImagePage extends ConsumerWidget { ], ), child: ClipRRect( - borderRadius: BorderRadius.circular(7), + borderRadius: const BorderRadius.all( + Radius.circular(7), + ), child: Image( image: image.image, fit: BoxFit.contain, @@ -149,7 +153,9 @@ class EditImagePage extends ConsumerWidget { margin: const EdgeInsets.only(bottom: 60, right: 10, left: 10, top: 10), decoration: BoxDecoration( color: context.scaffoldBackgroundColor, - borderRadius: BorderRadius.circular(30), + borderRadius: const BorderRadius.all( + Radius.circular(30), + ), ), child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, diff --git a/mobile/lib/pages/editing/filter.page.dart b/mobile/lib/pages/editing/filter.page.dart index f8b1f180df..9af065489d 100644 --- a/mobile/lib/pages/editing/filter.page.dart +++ b/mobile/lib/pages/editing/filter.page.dart @@ -162,13 +162,17 @@ class _FilterButton extends StatelessWidget { width: 80, height: 80, decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), border: isSelected ? Border.all(color: context.primaryColor, width: 3) : null, ), child: ClipRRect( - borderRadius: BorderRadius.circular(10), + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), child: ColorFiltered( colorFilter: filter, child: FittedBox( diff --git a/mobile/lib/pages/library/library.page.dart b/mobile/lib/pages/library/library.page.dart index 37b5e28797..a9ef479e2c 100644 --- a/mobile/lib/pages/library/library.page.dart +++ b/mobile/lib/pages/library/library.page.dart @@ -105,7 +105,9 @@ class QuickAccessButtons extends ConsumerWidget { color: context.colorScheme.onSurface.withAlpha(10), width: 1, ), - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), gradient: LinearGradient( colors: [ context.colorScheme.primary.withAlpha(10), @@ -240,7 +242,9 @@ class PeopleCollectionCard extends ConsumerWidget { height: size, width: size, decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), gradient: LinearGradient( colors: [ context.colorScheme.primary.withAlpha(30), diff --git a/mobile/lib/pages/library/partner/partner_detail.page.dart b/mobile/lib/pages/library/partner/partner_detail.page.dart index 618d31affa..94e098b973 100644 --- a/mobile/lib/pages/library/partner/partner_detail.page.dart +++ b/mobile/lib/pages/library/partner/partner_detail.page.dart @@ -80,7 +80,9 @@ class PartnerDetailPage extends HookConsumerWidget { color: context.colorScheme.onSurface.withAlpha(10), width: 1, ), - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), gradient: LinearGradient( colors: [ context.colorScheme.primary.withAlpha(10), diff --git a/mobile/lib/pages/library/places/places_collection.page.dart b/mobile/lib/pages/library/places/places_collection.page.dart index 5f2dea0dec..b98537d515 100644 --- a/mobile/lib/pages/library/places/places_collection.page.dart +++ b/mobile/lib/pages/library/places/places_collection.page.dart @@ -143,7 +143,9 @@ class PlaceTile extends StatelessWidget { ), ), leading: ClipRRect( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), child: CachedNetworkImage( width: 80, height: 80, diff --git a/mobile/lib/pages/search/map/map.page.dart b/mobile/lib/pages/search/map/map.page.dart index 022bf5da5f..9f32b1877b 100644 --- a/mobile/lib/pages/search/map/map.page.dart +++ b/mobile/lib/pages/search/map/map.page.dart @@ -156,7 +156,7 @@ class MapPage extends HookConsumerWidget { } else { // If no asset was previously selected and no new asset is available, close the bottom sheet if (selectedMarker.value == null) { - bottomSheetStreamController.add(MapCloseBottomSheet()); + bottomSheetStreamController.add(const MapCloseBottomSheet()); } selectedMarker.value = null; } diff --git a/mobile/lib/pages/search/search.page.dart b/mobile/lib/pages/search/search.page.dart index 0ab94df7c8..dba3199fac 100644 --- a/mobile/lib/pages/search/search.page.dart +++ b/mobile/lib/pages/search/search.page.dart @@ -511,16 +511,11 @@ class SearchPage extends HookConsumerWidget { search(); } - IconData getSearchPrefixIcon() { - switch (textSearchType.value) { - case TextSearchType.context: - return Icons.image_search_rounded; - case TextSearchType.filename: - return Icons.abc_rounded; - case TextSearchType.description: - return Icons.text_snippet_outlined; - } - } + IconData getSearchPrefixIcon() => switch (textSearchType.value) { + TextSearchType.context => Icons.image_search_rounded, + TextSearchType.filename => Icons.abc_rounded, + TextSearchType.description => Icons.text_snippet_outlined, + }; return Scaffold( resizeToAvoidBottomInset: false, @@ -533,8 +528,10 @@ class SearchPage extends HookConsumerWidget { style: MenuStyle( elevation: const WidgetStatePropertyAll(1), shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(24), + const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(24), + ), ), ), padding: const WidgetStatePropertyAll( @@ -631,7 +628,9 @@ class SearchPage extends HookConsumerWidget { color: context.colorScheme.onSurface.withAlpha(0), width: 0, ), - borderRadius: BorderRadius.circular(24), + borderRadius: const BorderRadius.all( + Radius.circular(24), + ), gradient: LinearGradient( colors: [ context.colorScheme.primary.withValues(alpha: 0.075), @@ -823,7 +822,9 @@ class QuickLinkList extends StatelessWidget { Widget build(BuildContext context) { return Container( decoration: BoxDecoration( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), border: Border.all( color: context.colorScheme.outline.withAlpha(10), width: 1, diff --git a/mobile/lib/presentation/widgets/images/remote_thumb_provider.dart b/mobile/lib/presentation/widgets/images/remote_thumb_provider.dart index c9561ee156..f9388ea5d6 100644 --- a/mobile/lib/presentation/widgets/images/remote_thumb_provider.dart +++ b/mobile/lib/presentation/widgets/images/remote_thumb_provider.dart @@ -15,7 +15,7 @@ class RemoteThumbProvider extends ImageProvider { final double width; final CacheManager? cacheManager; - RemoteThumbProvider({ + const RemoteThumbProvider({ required this.assetId, this.height = kTimelineFixedTileExtent, this.width = kTimelineFixedTileExtent, diff --git a/mobile/lib/presentation/widgets/images/thumb_hash_provider.dart b/mobile/lib/presentation/widgets/images/thumb_hash_provider.dart index 308c92e968..cd286a4cdf 100644 --- a/mobile/lib/presentation/widgets/images/thumb_hash_provider.dart +++ b/mobile/lib/presentation/widgets/images/thumb_hash_provider.dart @@ -8,7 +8,7 @@ import 'package:thumbhash/thumbhash.dart'; class ThumbHashProvider extends ImageProvider { final String thumbHash; - ThumbHashProvider({ + const ThumbHashProvider({ required this.thumbHash, }); diff --git a/mobile/lib/presentation/widgets/timeline/segment_builder.dart b/mobile/lib/presentation/widgets/timeline/segment_builder.dart index 313292c5dd..a746eab243 100644 --- a/mobile/lib/presentation/widgets/timeline/segment_builder.dart +++ b/mobile/lib/presentation/widgets/timeline/segment_builder.dart @@ -15,18 +15,12 @@ abstract class SegmentBuilder { this.groupBy = GroupAssetsBy.day, }); - static double headerExtent(HeaderType header) { - switch (header) { - case HeaderType.month: - return kTimelineHeaderExtent; - case HeaderType.day: - return kTimelineHeaderExtent * 0.90; - case HeaderType.monthAndDay: - return kTimelineHeaderExtent * 1.6; - case HeaderType.none: - return 0.0; - } - } + static double headerExtent(HeaderType header) => switch (header) { + HeaderType.month => kTimelineHeaderExtent, + HeaderType.day => kTimelineHeaderExtent * 0.90, + HeaderType.monthAndDay => kTimelineHeaderExtent * 1.6, + HeaderType.none => 0.0, + }; static Widget buildPlaceholder( BuildContext context, diff --git a/mobile/lib/providers/album/album_viewer.provider.dart b/mobile/lib/providers/album/album_viewer.provider.dart index cf7344d321..d1290df298 100644 --- a/mobile/lib/providers/album/album_viewer.provider.dart +++ b/mobile/lib/providers/album/album_viewer.provider.dart @@ -1,12 +1,12 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/entities/album.entity.dart'; import 'package:immich_mobile/models/albums/album_viewer_page_state.model.dart'; import 'package:immich_mobile/services/album.service.dart'; -import 'package:immich_mobile/entities/album.entity.dart'; class AlbumViewerNotifier extends StateNotifier { AlbumViewerNotifier(this.ref) : super( - AlbumViewerPageState( + const AlbumViewerPageState( editTitleText: "", isEditAlbum: false, editDescriptionText: "", diff --git a/mobile/lib/providers/app_settings.provider.dart b/mobile/lib/providers/app_settings.provider.dart index 2d4bdd0eef..109218a07c 100644 --- a/mobile/lib/providers/app_settings.provider.dart +++ b/mobile/lib/providers/app_settings.provider.dart @@ -5,4 +5,4 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'app_settings.provider.g.dart'; @Riverpod(keepAlive: true) -AppSettingsService appSettingsService(Ref _) => AppSettingsService(); +AppSettingsService appSettingsService(Ref _) => const AppSettingsService(); diff --git a/mobile/lib/providers/app_settings.provider.g.dart b/mobile/lib/providers/app_settings.provider.g.dart index 66814abd49..c959861c04 100644 --- a/mobile/lib/providers/app_settings.provider.g.dart +++ b/mobile/lib/providers/app_settings.provider.g.dart @@ -7,7 +7,7 @@ part of 'app_settings.provider.dart'; // ************************************************************************** String _$appSettingsServiceHash() => - r'2aa16d76a8df869c39486325efc1d08b2d2c284c'; + r'89cece3a19e06612f5639ae290120e854a0c5a31'; /// See also [appSettingsService]. @ProviderFor(appSettingsService) diff --git a/mobile/lib/providers/asset_viewer/download.provider.dart b/mobile/lib/providers/asset_viewer/download.provider.dart index 3daed6f686..7f0d913a02 100644 --- a/mobile/lib/providers/asset_viewer/download.provider.dart +++ b/mobile/lib/providers/asset_viewer/download.provider.dart @@ -23,7 +23,7 @@ class DownloadStateNotifier extends StateNotifier { this._shareService, this._albumService, ) : super( - DownloadState( + const DownloadState( downloadStatus: TaskStatus.complete, showProgress: false, taskProgress: {}, diff --git a/mobile/lib/providers/auth.provider.dart b/mobile/lib/providers/auth.provider.dart index dfbd18953a..2d3de11257 100644 --- a/mobile/lib/providers/auth.provider.dart +++ b/mobile/lib/providers/auth.provider.dart @@ -45,7 +45,7 @@ class AuthNotifier extends StateNotifier { this._secureStorageService, this._widgetService, ) : super( - AuthState( + const AuthState( deviceId: "", userId: "", userEmail: "", @@ -89,7 +89,7 @@ class AuthNotifier extends StateNotifier { } Future _cleanUp() async { - state = AuthState( + state = const AuthState( deviceId: "", userId: "", userEmail: "", diff --git a/mobile/lib/providers/backup/ios_background_settings.provider.dart b/mobile/lib/providers/backup/ios_background_settings.provider.dart index 7605d73650..d70e674845 100644 --- a/mobile/lib/providers/backup/ios_background_settings.provider.dart +++ b/mobile/lib/providers/backup/ios_background_settings.provider.dart @@ -7,7 +7,7 @@ class IOSBackgroundSettings { final DateTime? timeOfLastFetch; final DateTime? timeOfLastProcessing; - IOSBackgroundSettings({ + const IOSBackgroundSettings({ required this.appRefreshEnabled, required this.numberOfBackgroundTasksQueued, this.timeOfLastFetch, diff --git a/mobile/lib/providers/image/cache/image_loader.dart b/mobile/lib/providers/image/cache/image_loader.dart index fd6e567b2c..f88d54e4f1 100644 --- a/mobile/lib/providers/image/cache/image_loader.dart +++ b/mobile/lib/providers/image/cache/image_loader.dart @@ -42,6 +42,6 @@ class ImageLoader { } // If we get here, the image failed to load from the cache stream - throw ImageLoadingException('Could not load image from stream'); + throw const ImageLoadingException('Could not load image from stream'); } } diff --git a/mobile/lib/providers/image/exceptions/image_loading_exception.dart b/mobile/lib/providers/image/exceptions/image_loading_exception.dart index 5e5ff72359..98f633a88f 100644 --- a/mobile/lib/providers/image/exceptions/image_loading_exception.dart +++ b/mobile/lib/providers/image/exceptions/image_loading_exception.dart @@ -1,5 +1,5 @@ /// An exception for the [ImageLoader] and the Immich image providers class ImageLoadingException implements Exception { final String message; - ImageLoadingException(this.message); + const ImageLoadingException(this.message); } diff --git a/mobile/lib/providers/image/immich_remote_image_provider.dart b/mobile/lib/providers/image/immich_remote_image_provider.dart index d5189fa4fc..fe0811583c 100644 --- a/mobile/lib/providers/image/immich_remote_image_provider.dart +++ b/mobile/lib/providers/image/immich_remote_image_provider.dart @@ -23,7 +23,7 @@ class ImmichRemoteImageProvider /// The image cache manager final CacheManager? cacheManager; - ImmichRemoteImageProvider({ + const ImmichRemoteImageProvider({ required this.assetId, this.cacheManager, }); diff --git a/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart b/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart index a1e9c737b0..8533cb6f08 100644 --- a/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart +++ b/mobile/lib/providers/image/immich_remote_thumbnail_provider.dart @@ -24,7 +24,7 @@ class ImmichRemoteThumbnailProvider /// The image cache manager final CacheManager? cacheManager; - ImmichRemoteThumbnailProvider({ + const ImmichRemoteThumbnailProvider({ required this.assetId, this.height, this.width, diff --git a/mobile/lib/providers/search/paginated_search.provider.dart b/mobile/lib/providers/search/paginated_search.provider.dart index bac5c5e77e..65afb39b7c 100644 --- a/mobile/lib/providers/search/paginated_search.provider.dart +++ b/mobile/lib/providers/search/paginated_search.provider.dart @@ -17,7 +17,7 @@ class PaginatedSearchNotifier extends StateNotifier { final SearchService _searchService; PaginatedSearchNotifier(this._searchService) - : super(SearchResult(assets: [], nextPage: 1)); + : super(const SearchResult(assets: [], nextPage: 1)); Future search(SearchFilter filter) async { if (state.nextPage == null) { @@ -39,7 +39,7 @@ class PaginatedSearchNotifier extends StateNotifier { } clear() { - state = SearchResult(assets: [], nextPage: 1); + state = const SearchResult(assets: [], nextPage: 1); } } diff --git a/mobile/lib/providers/server_info.provider.dart b/mobile/lib/providers/server_info.provider.dart index a793acb3f6..aabf6a5390 100644 --- a/mobile/lib/providers/server_info.provider.dart +++ b/mobile/lib/providers/server_info.provider.dart @@ -1,36 +1,35 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:immich_mobile/models/server_info/server_disk_info.model.dart'; - -import 'package:immich_mobile/models/server_info/server_info.model.dart'; -import 'package:immich_mobile/services/server_info.service.dart'; import 'package:immich_mobile/models/server_info/server_config.model.dart'; +import 'package:immich_mobile/models/server_info/server_disk_info.model.dart'; import 'package:immich_mobile/models/server_info/server_features.model.dart'; +import 'package:immich_mobile/models/server_info/server_info.model.dart'; import 'package:immich_mobile/models/server_info/server_version.model.dart'; +import 'package:immich_mobile/services/server_info.service.dart'; import 'package:logging/logging.dart'; import 'package:package_info_plus/package_info_plus.dart'; class ServerInfoNotifier extends StateNotifier { ServerInfoNotifier(this._serverInfoService) : super( - ServerInfo( - serverVersion: const ServerVersion( + const ServerInfo( + serverVersion: ServerVersion( major: 0, minor: 0, patch: 0, ), - latestVersion: const ServerVersion( + latestVersion: ServerVersion( major: 0, minor: 0, patch: 0, ), - serverFeatures: const ServerFeatures( + serverFeatures: ServerFeatures( map: true, trash: true, oauthEnabled: false, passwordLogin: true, ), - serverConfig: const ServerConfig( + serverConfig: ServerConfig( trashDays: 30, oauthButtonText: '', externalDomain: '', @@ -38,7 +37,7 @@ class ServerInfoNotifier extends StateNotifier { 'https://tiles.immich.cloud/v1/style/light.json', mapDarkStyleUrl: 'https://tiles.immich.cloud/v1/style/dark.json', ), - serverDiskInfo: const ServerDiskInfo( + serverDiskInfo: ServerDiskInfo( diskAvailable: "0", diskSize: "0", diskUse: "0", diff --git a/mobile/lib/providers/timeline/multiselect.provider.dart b/mobile/lib/providers/timeline/multiselect.provider.dart index 121bcba343..cb9ddc6d7c 100644 --- a/mobile/lib/providers/timeline/multiselect.provider.dart +++ b/mobile/lib/providers/timeline/multiselect.provider.dart @@ -14,7 +14,7 @@ final multiSelectProvider = class MultiSelectState { final Set selectedAssets; - MultiSelectState({ + const MultiSelectState({ required this.selectedAssets, }); @@ -50,7 +50,7 @@ class MultiSelectNotifier extends Notifier { MultiSelectState build() { _timelineService = ref.read(timelineServiceProvider); - return MultiSelectState( + return const MultiSelectState( selectedAssets: {}, ); } diff --git a/mobile/lib/providers/upload_profile_image.provider.dart b/mobile/lib/providers/upload_profile_image.provider.dart index 10aa645654..fe13944ef6 100644 --- a/mobile/lib/providers/upload_profile_image.provider.dart +++ b/mobile/lib/providers/upload_profile_image.provider.dart @@ -17,7 +17,7 @@ class UploadProfileImageState { // enum final UploadProfileStatus status; final String profileImagePath; - UploadProfileImageState({ + const UploadProfileImageState({ required this.status, required this.profileImagePath, }); @@ -74,7 +74,7 @@ class UploadProfileImageNotifier extends StateNotifier { UploadProfileImageNotifier(this._userService) : super( - UploadProfileImageState( + const UploadProfileImageState( profileImagePath: '', status: UploadProfileStatus.idle, ), diff --git a/mobile/lib/providers/websocket.provider.dart b/mobile/lib/providers/websocket.provider.dart index 72dbda8b6f..2600c6d8ee 100644 --- a/mobile/lib/providers/websocket.provider.dart +++ b/mobile/lib/providers/websocket.provider.dart @@ -56,7 +56,7 @@ class WebsocketState { final bool isConnected; final List pendingChanges; - WebsocketState({ + const WebsocketState({ this.socket, required this.isConnected, required this.pendingChanges, @@ -94,7 +94,11 @@ class WebsocketState { class WebsocketNotifier extends StateNotifier { WebsocketNotifier(this._ref) : super( - WebsocketState(socket: null, isConnected: false, pendingChanges: []), + const WebsocketState( + socket: null, + isConnected: false, + pendingChanges: [], + ), ); final _log = Logger('WebsocketNotifier'); diff --git a/mobile/lib/repositories/album.repository.dart b/mobile/lib/repositories/album.repository.dart index aeb9fb3947..1d0349bb2a 100644 --- a/mobile/lib/repositories/album.repository.dart +++ b/mobile/lib/repositories/album.repository.dart @@ -18,7 +18,7 @@ final albumRepositoryProvider = Provider((ref) => AlbumRepository(ref.watch(dbProvider))); class AlbumRepository extends DatabaseRepository { - AlbumRepository(super.db); + const AlbumRepository(super.db); Future count({bool? local}) { final baseQuery = db.albums.where(); diff --git a/mobile/lib/repositories/api.repository.dart b/mobile/lib/repositories/api.repository.dart index b454c77f9b..646e2480e9 100644 --- a/mobile/lib/repositories/api.repository.dart +++ b/mobile/lib/repositories/api.repository.dart @@ -3,7 +3,7 @@ import 'package:immich_mobile/constants/errors.dart'; abstract class ApiRepository { Future checkNull(Future future) async { final response = await future; - if (response == null) throw NoResponseDtoError(); + if (response == null) throw const NoResponseDtoError(); return response; } } diff --git a/mobile/lib/repositories/asset.repository.dart b/mobile/lib/repositories/asset.repository.dart index 4437ddfcff..1e3defae08 100644 --- a/mobile/lib/repositories/asset.repository.dart +++ b/mobile/lib/repositories/asset.repository.dart @@ -15,7 +15,7 @@ final assetRepositoryProvider = Provider((ref) => AssetRepository(ref.watch(dbProvider))); class AssetRepository extends DatabaseRepository { - AssetRepository(super.db); + const AssetRepository(super.db); Future> getByAlbum( Album album, { diff --git a/mobile/lib/repositories/asset_api.repository.dart b/mobile/lib/repositories/asset_api.repository.dart index 510715c199..49dbf74304 100644 --- a/mobile/lib/repositories/asset_api.repository.dart +++ b/mobile/lib/repositories/asset_api.repository.dart @@ -56,18 +56,12 @@ class AssetApiRepository extends ApiRepository { ); } - _mapVisibility(AssetVisibilityEnum visibility) { - switch (visibility) { - case AssetVisibilityEnum.timeline: - return AssetVisibility.timeline; - case AssetVisibilityEnum.hidden: - return AssetVisibility.hidden; - case AssetVisibilityEnum.locked: - return AssetVisibility.locked; - case AssetVisibilityEnum.archive: - return AssetVisibility.archive; - } - } + _mapVisibility(AssetVisibilityEnum visibility) => switch (visibility) { + AssetVisibilityEnum.timeline => AssetVisibility.timeline, + AssetVisibilityEnum.hidden => AssetVisibility.hidden, + AssetVisibilityEnum.locked => AssetVisibility.locked, + AssetVisibilityEnum.archive => AssetVisibility.archive, + }; Future getAssetMIMEType(String assetId) async { final response = await checkNull(_api.getAssetInfo(assetId)); diff --git a/mobile/lib/repositories/asset_media.repository.dart b/mobile/lib/repositories/asset_media.repository.dart index 0a415b95e2..bb1e6f414f 100644 --- a/mobile/lib/repositories/asset_media.repository.dart +++ b/mobile/lib/repositories/asset_media.repository.dart @@ -6,9 +6,11 @@ import 'package:immich_mobile/entities/store.entity.dart'; import 'package:immich_mobile/utils/hash.dart'; import 'package:photo_manager/photo_manager.dart' hide AssetType; -final assetMediaRepositoryProvider = Provider((ref) => AssetMediaRepository()); +final assetMediaRepositoryProvider = + Provider((ref) => const AssetMediaRepository()); class AssetMediaRepository { + const AssetMediaRepository(); Future> deleteAll(List ids) => PhotoManager.editor.deleteWithIds(ids); diff --git a/mobile/lib/repositories/auth.repository.dart b/mobile/lib/repositories/auth.repository.dart index c1163b8639..1403280723 100644 --- a/mobile/lib/repositories/auth.repository.dart +++ b/mobile/lib/repositories/auth.repository.dart @@ -22,7 +22,7 @@ final authRepositoryProvider = Provider( class AuthRepository extends DatabaseRepository { final Drift _drift; - AuthRepository(super.db, this._drift); + const AuthRepository(super.db, this._drift); Future clearLocalData() { return db.writeTxn(() { diff --git a/mobile/lib/repositories/backup.repository.dart b/mobile/lib/repositories/backup.repository.dart index 836dde22c5..05d2047add 100644 --- a/mobile/lib/repositories/backup.repository.dart +++ b/mobile/lib/repositories/backup.repository.dart @@ -10,7 +10,7 @@ final backupAlbumRepositoryProvider = Provider((ref) => BackupAlbumRepository(ref.watch(dbProvider))); class BackupAlbumRepository extends DatabaseRepository { - BackupAlbumRepository(super.db); + const BackupAlbumRepository(super.db); Future> getAll({BackupAlbumSort? sort}) { final baseQuery = db.backupAlbums.where(); diff --git a/mobile/lib/repositories/biometric.repository.dart b/mobile/lib/repositories/biometric.repository.dart index 12d45f8de7..94540c8249 100644 --- a/mobile/lib/repositories/biometric.repository.dart +++ b/mobile/lib/repositories/biometric.repository.dart @@ -9,7 +9,7 @@ final biometricRepositoryProvider = class BiometricRepository { final LocalAuthentication _localAuth; - BiometricRepository(this._localAuth); + const BiometricRepository(this._localAuth); Future getStatus() async { final bool canAuthenticateWithBiometrics = diff --git a/mobile/lib/repositories/database.repository.dart b/mobile/lib/repositories/database.repository.dart index 3eb74621fa..c644dae668 100644 --- a/mobile/lib/repositories/database.repository.dart +++ b/mobile/lib/repositories/database.repository.dart @@ -7,7 +7,7 @@ const Symbol _zoneTxn = #zoneTxn; abstract class DatabaseRepository implements IDatabaseRepository { final Isar db; - DatabaseRepository(this.db); + const DatabaseRepository(this.db); bool get inTxn => Zone.current[_zoneTxn] != null; diff --git a/mobile/lib/repositories/etag.repository.dart b/mobile/lib/repositories/etag.repository.dart index 2bf76218de..b8382efdfc 100644 --- a/mobile/lib/repositories/etag.repository.dart +++ b/mobile/lib/repositories/etag.repository.dart @@ -8,7 +8,7 @@ final etagRepositoryProvider = Provider((ref) => ETagRepository(ref.watch(dbProvider))); class ETagRepository extends DatabaseRepository { - ETagRepository(super.db); + const ETagRepository(super.db); Future> getAllIds() => db.eTags.where().idProperty().findAll(); diff --git a/mobile/lib/repositories/file_media.repository.dart b/mobile/lib/repositories/file_media.repository.dart index 6b0237dcdb..2bccb05210 100644 --- a/mobile/lib/repositories/file_media.repository.dart +++ b/mobile/lib/repositories/file_media.repository.dart @@ -6,9 +6,11 @@ import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/repositories/asset_media.repository.dart'; import 'package:photo_manager/photo_manager.dart' hide AssetType; -final fileMediaRepositoryProvider = Provider((ref) => FileMediaRepository()); +final fileMediaRepositoryProvider = + Provider((ref) => const FileMediaRepository()); class FileMediaRepository { + const FileMediaRepository(); Future saveImage( Uint8List data, { required String title, diff --git a/mobile/lib/repositories/local_files_manager.repository.dart b/mobile/lib/repositories/local_files_manager.repository.dart index 4e99f5d6ef..35c59acc2f 100644 --- a/mobile/lib/repositories/local_files_manager.repository.dart +++ b/mobile/lib/repositories/local_files_manager.repository.dart @@ -7,7 +7,7 @@ final localFilesManagerRepositoryProvider = Provider( ); class LocalFilesManagerRepository { - LocalFilesManagerRepository(this._service); + const LocalFilesManagerRepository(this._service); final LocalFilesManagerService _service; diff --git a/mobile/lib/repositories/network.repository.dart b/mobile/lib/repositories/network.repository.dart index e80b406b10..2f859e9452 100644 --- a/mobile/lib/repositories/network.repository.dart +++ b/mobile/lib/repositories/network.repository.dart @@ -12,7 +12,7 @@ final networkRepositoryProvider = Provider((_) { class NetworkRepository { final NetworkInfo _networkInfo; - NetworkRepository(this._networkInfo); + const NetworkRepository(this._networkInfo); Future getWifiName() { if (Platform.isAndroid) { diff --git a/mobile/lib/repositories/partner.repository.dart b/mobile/lib/repositories/partner.repository.dart index 8a53ca7c8d..eb41391ba2 100644 --- a/mobile/lib/repositories/partner.repository.dart +++ b/mobile/lib/repositories/partner.repository.dart @@ -11,7 +11,7 @@ final partnerRepositoryProvider = Provider( ); class PartnerRepository extends DatabaseRepository { - PartnerRepository(super.db); + const PartnerRepository(super.db); Future> getSharedBy() async { return (await db.users diff --git a/mobile/lib/repositories/permission.repository.dart b/mobile/lib/repositories/permission.repository.dart index f825c36075..74230a3652 100644 --- a/mobile/lib/repositories/permission.repository.dart +++ b/mobile/lib/repositories/permission.repository.dart @@ -2,11 +2,11 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:permission_handler/permission_handler.dart'; final permissionRepositoryProvider = Provider((_) { - return PermissionRepository(); + return const PermissionRepository(); }); class PermissionRepository implements IPermissionRepository { - PermissionRepository(); + const PermissionRepository(); @override Future hasLocationWhenInUsePermission() { diff --git a/mobile/lib/repositories/secure_storage.repository.dart b/mobile/lib/repositories/secure_storage.repository.dart index 08d47b0525..5660258a2d 100644 --- a/mobile/lib/repositories/secure_storage.repository.dart +++ b/mobile/lib/repositories/secure_storage.repository.dart @@ -2,12 +2,12 @@ import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; final secureStorageRepositoryProvider = - Provider((ref) => SecureStorageRepository(const FlutterSecureStorage())); + Provider((ref) => const SecureStorageRepository(FlutterSecureStorage())); class SecureStorageRepository { final FlutterSecureStorage _secureStorage; - SecureStorageRepository(this._secureStorage); + const SecureStorageRepository(this._secureStorage); Future read(String key) { return _secureStorage.read(key: key); diff --git a/mobile/lib/repositories/timeline.repository.dart b/mobile/lib/repositories/timeline.repository.dart index 0120ea85ad..ea4cb63753 100644 --- a/mobile/lib/repositories/timeline.repository.dart +++ b/mobile/lib/repositories/timeline.repository.dart @@ -13,7 +13,7 @@ final timelineRepositoryProvider = Provider((ref) => TimelineRepository(ref.watch(dbProvider))); class TimelineRepository extends DatabaseRepository { - TimelineRepository(super.db); + const TimelineRepository(super.db); Future> getTimelineUserIds(String id) { return db.users diff --git a/mobile/lib/repositories/widget.repository.dart b/mobile/lib/repositories/widget.repository.dart index 630c47fcec..be314a281e 100644 --- a/mobile/lib/repositories/widget.repository.dart +++ b/mobile/lib/repositories/widget.repository.dart @@ -1,10 +1,10 @@ import 'package:home_widget/home_widget.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -final widgetRepositoryProvider = Provider((_) => WidgetRepository()); +final widgetRepositoryProvider = Provider((_) => const WidgetRepository()); class WidgetRepository { - WidgetRepository(); + const WidgetRepository(); Future saveData(String key, String value) async { await HomeWidget.saveWidgetData(key, value); diff --git a/mobile/lib/routing/backup_permission_guard.dart b/mobile/lib/routing/backup_permission_guard.dart index 57a0c7a927..245a4b27af 100644 --- a/mobile/lib/routing/backup_permission_guard.dart +++ b/mobile/lib/routing/backup_permission_guard.dart @@ -5,7 +5,7 @@ import 'package:immich_mobile/routing/router.dart'; class BackupPermissionGuard extends AutoRouteGuard { final GalleryPermissionNotifier _permission; - BackupPermissionGuard(this._permission); + const BackupPermissionGuard(this._permission); @override void onNavigation(NavigationResolver resolver, StackRouter router) async { diff --git a/mobile/lib/routing/duplicate_guard.dart b/mobile/lib/routing/duplicate_guard.dart index 217ff1cbf4..efc649bc41 100644 --- a/mobile/lib/routing/duplicate_guard.dart +++ b/mobile/lib/routing/duplicate_guard.dart @@ -3,7 +3,7 @@ import 'package:flutter/foundation.dart'; /// Guards against duplicate navigation to this route class DuplicateGuard extends AutoRouteGuard { - DuplicateGuard(); + const DuplicateGuard(); @override void onNavigation(NavigationResolver resolver, StackRouter router) async { // Duplicate navigation diff --git a/mobile/lib/routing/router.dart b/mobile/lib/routing/router.dart index 5e8f018ae8..33631f85da 100644 --- a/mobile/lib/routing/router.dart +++ b/mobile/lib/routing/router.dart @@ -106,7 +106,7 @@ class AppRouter extends RootStackRouter { LocalAuthService localAuthService, ) { _authGuard = AuthGuard(apiService); - _duplicateGuard = DuplicateGuard(); + _duplicateGuard = const DuplicateGuard(); _lockedGuard = LockedGuard(apiService, secureStorageService, localAuthService); _backupPermissionGuard = BackupPermissionGuard(galleryPermissionNotifier); diff --git a/mobile/lib/services/app_settings.service.dart b/mobile/lib/services/app_settings.service.dart index b6c675b636..76fd5e1ff6 100644 --- a/mobile/lib/services/app_settings.service.dart +++ b/mobile/lib/services/app_settings.service.dart @@ -100,6 +100,7 @@ enum AppSettingsEnum { } class AppSettingsService { + const AppSettingsService(); T getSetting(AppSettingsEnum setting) { return Store.get(setting.storeKey, setting.defaultValue); } diff --git a/mobile/lib/services/backup_album.service.dart b/mobile/lib/services/backup_album.service.dart index 0de7748a9c..ef9d1031de 100644 --- a/mobile/lib/services/backup_album.service.dart +++ b/mobile/lib/services/backup_album.service.dart @@ -9,7 +9,7 @@ final backupAlbumServiceProvider = Provider((ref) { class BackupAlbumService { final BackupAlbumRepository _backupAlbumRepository; - BackupAlbumService(this._backupAlbumRepository); + const BackupAlbumService(this._backupAlbumRepository); Future> getAll({BackupAlbumSort? sort}) { return _backupAlbumRepository.getAll(sort: sort); diff --git a/mobile/lib/services/deep_link.service.dart b/mobile/lib/services/deep_link.service.dart index 67b6b79793..2665d9ee52 100644 --- a/mobile/lib/services/deep_link.service.dart +++ b/mobile/lib/services/deep_link.service.dart @@ -25,7 +25,7 @@ class DeepLinkService { final CurrentAsset _currentAsset; final CurrentAlbum _currentAlbum; - DeepLinkService( + const DeepLinkService( this._memoryService, this._assetService, this._albumService, @@ -38,16 +38,12 @@ class DeepLinkService { final intent = link.uri.host; final queryParams = link.uri.queryParameters; - PageRouteInfo? deepLinkRoute; - - switch (intent) { - case "memory": - deepLinkRoute = await _buildMemoryDeepLink(queryParams['id'] ?? ''); - case "asset": - deepLinkRoute = await _buildAssetDeepLink(queryParams['id'] ?? ''); - case "album": - deepLinkRoute = await _buildAlbumDeepLink(queryParams['id'] ?? ''); - } + PageRouteInfo? deepLinkRoute = switch (intent) { + "memory" => await _buildMemoryDeepLink(queryParams['id'] ?? ''), + "asset" => await _buildAssetDeepLink(queryParams['id'] ?? ''), + "album" => await _buildAlbumDeepLink(queryParams['id'] ?? ''), + _ => null, + }; // Deep link resolution failed, safely handle it based on the app state if (deepLinkRoute == null) { @@ -98,7 +94,7 @@ class DeepLinkService { ]); } - Future _buildMemoryDeepLink(String memoryId) async { + Future _buildMemoryDeepLink(String memoryId) async { final memory = await _memoryService.getMemoryById(memoryId); if (memory == null) { @@ -108,7 +104,7 @@ class DeepLinkService { return MemoryRoute(memories: [memory], memoryIndex: 0); } - Future _buildAssetDeepLink(String assetId) async { + Future _buildAssetDeepLink(String assetId) async { final asset = await _assetService.getAssetByRemoteId(assetId); if (asset == null) { @@ -126,7 +122,7 @@ class DeepLinkService { ); } - Future _buildAlbumDeepLink(String albumId) async { + Future _buildAlbumDeepLink(String albumId) async { final album = await _albumService.getAlbumByRemoteId(albumId); if (album == null) { diff --git a/mobile/lib/services/device.service.dart b/mobile/lib/services/device.service.dart index 393274608b..50a0d93b24 100644 --- a/mobile/lib/services/device.service.dart +++ b/mobile/lib/services/device.service.dart @@ -3,10 +3,10 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/domain/models/store.model.dart'; import 'package:immich_mobile/entities/store.entity.dart'; -final deviceServiceProvider = Provider((ref) => DeviceService()); +final deviceServiceProvider = Provider((ref) => const DeviceService()); class DeviceService { - DeviceService(); + const DeviceService(); createDeviceId() { return FlutterUdid.consistentUdid; diff --git a/mobile/lib/services/entity.service.dart b/mobile/lib/services/entity.service.dart index 91598dcd13..8ffead40fa 100644 --- a/mobile/lib/services/entity.service.dart +++ b/mobile/lib/services/entity.service.dart @@ -8,7 +8,7 @@ import 'package:immich_mobile/repositories/asset.repository.dart'; class EntityService { final AssetRepository _assetRepository; final IsarUserRepository _isarUserRepository; - EntityService( + const EntityService( this._assetRepository, this._isarUserRepository, ); diff --git a/mobile/lib/services/etag.service.dart b/mobile/lib/services/etag.service.dart index 1808e32485..4b6f2279ed 100644 --- a/mobile/lib/services/etag.service.dart +++ b/mobile/lib/services/etag.service.dart @@ -7,7 +7,7 @@ final etagServiceProvider = class ETagService { final ETagRepository _eTagRepository; - ETagService(this._eTagRepository); + const ETagService(this._eTagRepository); Future clearTable() { return _eTagRepository.clearTable(); diff --git a/mobile/lib/services/local_auth.service.dart b/mobile/lib/services/local_auth.service.dart index c4abf0dbb2..12da5f256b 100644 --- a/mobile/lib/services/local_auth.service.dart +++ b/mobile/lib/services/local_auth.service.dart @@ -11,7 +11,7 @@ final localAuthServiceProvider = Provider( class LocalAuthService { final BiometricRepository _biometricRepository; - LocalAuthService(this._biometricRepository); + const LocalAuthService(this._biometricRepository); Future getStatus() { return _biometricRepository.getStatus(); diff --git a/mobile/lib/services/local_files_manager.service.dart b/mobile/lib/services/local_files_manager.service.dart index 3d5f7a217d..6ba8b43fbf 100644 --- a/mobile/lib/services/local_files_manager.service.dart +++ b/mobile/lib/services/local_files_manager.service.dart @@ -3,10 +3,11 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:logging/logging.dart'; final localFileManagerServiceProvider = Provider( - (ref) => LocalFilesManagerService(), + (ref) => const LocalFilesManagerService(), ); class LocalFilesManagerService { + const LocalFilesManagerService(); static final Logger _logger = Logger('LocalFilesManager'); static const MethodChannel _channel = MethodChannel('file_trash'); diff --git a/mobile/lib/services/network.service.dart b/mobile/lib/services/network.service.dart index ac91a56f2c..de55da8d7c 100644 --- a/mobile/lib/services/network.service.dart +++ b/mobile/lib/services/network.service.dart @@ -13,7 +13,7 @@ class NetworkService { final NetworkRepository _repository; final IPermissionRepository _permissionRepository; - NetworkService(this._repository, this._permissionRepository); + const NetworkService(this._repository, this._permissionRepository); Future getLocationWhenInUserPermission() { return _permissionRepository.hasLocationWhenInUsePermission(); diff --git a/mobile/lib/services/secure_storage.service.dart b/mobile/lib/services/secure_storage.service.dart index e9b67257b8..38e6deb0d4 100644 --- a/mobile/lib/services/secure_storage.service.dart +++ b/mobile/lib/services/secure_storage.service.dart @@ -10,7 +10,7 @@ final secureStorageServiceProvider = Provider( class SecureStorageService { final SecureStorageRepository _secureStorageRepository; - SecureStorageService(this._secureStorageRepository); + const SecureStorageService(this._secureStorageRepository); Future write(String key, String value) async { await _secureStorageRepository.write(key, value); diff --git a/mobile/lib/services/server_info.service.dart b/mobile/lib/services/server_info.service.dart index e2b7db2fce..75ce68a73c 100644 --- a/mobile/lib/services/server_info.service.dart +++ b/mobile/lib/services/server_info.service.dart @@ -16,7 +16,7 @@ final serverInfoServiceProvider = Provider( class ServerInfoService { final ApiService _apiService; - ServerInfoService(this._apiService); + const ServerInfoService(this._apiService); Future getDiskInfo() async { try { diff --git a/mobile/lib/services/stack.service.dart b/mobile/lib/services/stack.service.dart index 963169411e..e2ab6c804b 100644 --- a/mobile/lib/services/stack.service.dart +++ b/mobile/lib/services/stack.service.dart @@ -7,7 +7,7 @@ import 'package:immich_mobile/services/api.service.dart'; import 'package:openapi/api.dart'; class StackService { - StackService(this._api, this._assetRepository); + const StackService(this._api, this._assetRepository); final ApiService _api; final AssetRepository _assetRepository; diff --git a/mobile/lib/services/widget.service.dart b/mobile/lib/services/widget.service.dart index e71733f4b9..66e070494f 100644 --- a/mobile/lib/services/widget.service.dart +++ b/mobile/lib/services/widget.service.dart @@ -11,7 +11,7 @@ final widgetServiceProvider = Provider((ref) { class WidgetService { final WidgetRepository _repository; - WidgetService(this._repository); + const WidgetService(this._repository); Future writeCredentials(String serverURL, String sessionKey) async { await _repository.setAppGroupId(appShareGroupId); diff --git a/mobile/lib/theme/dynamic_theme.dart b/mobile/lib/theme/dynamic_theme.dart index 39d6b6ee45..8ebf783469 100644 --- a/mobile/lib/theme/dynamic_theme.dart +++ b/mobile/lib/theme/dynamic_theme.dart @@ -4,7 +4,7 @@ import 'package:dynamic_color/dynamic_color.dart'; import 'package:immich_mobile/theme/theme_data.dart'; abstract final class DynamicTheme { - DynamicTheme._(); + const DynamicTheme._(); static ImmichTheme? _theme; // Method to fetch dynamic system colors diff --git a/mobile/lib/utils/map_utils.dart b/mobile/lib/utils/map_utils.dart index df1ff28d8f..39443fb225 100644 --- a/mobile/lib/utils/map_utils.dart +++ b/mobile/lib/utils/map_utils.dart @@ -7,7 +7,7 @@ import 'package:logging/logging.dart'; import 'package:maplibre_gl/maplibre_gl.dart'; class MapUtils { - MapUtils._(); + const MapUtils._(); static final Logger _log = Logger("MapUtils"); static const defaultSourceId = 'asset-map-markers'; diff --git a/mobile/lib/widgets/album/album_thumbnail_card.dart b/mobile/lib/widgets/album/album_thumbnail_card.dart index 5e89cd7db3..d78f391754 100644 --- a/mobile/lib/widgets/album/album_thumbnail_card.dart +++ b/mobile/lib/widgets/album/album_thumbnail_card.dart @@ -106,7 +106,9 @@ class AlbumThumbnailCard extends ConsumerWidget { width: cardSize, height: cardSize, child: ClipRRect( - borderRadius: BorderRadius.circular(20), + borderRadius: const BorderRadius.all( + Radius.circular(20), + ), child: album.thumbnail.value == null ? buildEmptyThumbnail() : buildAlbumThumbnail(), diff --git a/mobile/lib/widgets/album/album_title_text_field.dart b/mobile/lib/widgets/album/album_title_text_field.dart index c19c827846..7807a6e6ae 100644 --- a/mobile/lib/widgets/album/album_title_text_field.dart +++ b/mobile/lib/widgets/album/album_title_text_field.dart @@ -59,13 +59,17 @@ class AlbumTitleTextField extends ConsumerWidget { splashRadius: 10, ) : null, - enabledBorder: OutlineInputBorder( - borderSide: const BorderSide(color: Colors.transparent), - borderRadius: BorderRadius.circular(10), + enabledBorder: const OutlineInputBorder( + borderSide: BorderSide(color: Colors.transparent), + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), - focusedBorder: OutlineInputBorder( - borderSide: const BorderSide(color: Colors.transparent), - borderRadius: BorderRadius.circular(10), + focusedBorder: const OutlineInputBorder( + borderSide: BorderSide(color: Colors.transparent), + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), hintText: 'add_a_title'.tr(), hintStyle: context.themeData.inputDecorationTheme.hintStyle?.copyWith( diff --git a/mobile/lib/widgets/asset_grid/asset_grid_data_structure.dart b/mobile/lib/widgets/asset_grid/asset_grid_data_structure.dart index 64803046ef..6b94c04c4d 100644 --- a/mobile/lib/widgets/asset_grid/asset_grid_data_structure.dart +++ b/mobile/lib/widgets/asset_grid/asset_grid_data_structure.dart @@ -23,7 +23,7 @@ class RenderAssetGridElement { final int offset; final int totalCount; - RenderAssetGridElement( + const RenderAssetGridElement( this.type, { this.title, required this.date, diff --git a/mobile/lib/widgets/asset_grid/draggable_scrollbar.dart b/mobile/lib/widgets/asset_grid/draggable_scrollbar.dart index 6eddf58adb..779da8add7 100644 --- a/mobile/lib/widgets/asset_grid/draggable_scrollbar.dart +++ b/mobile/lib/widgets/asset_grid/draggable_scrollbar.dart @@ -210,7 +210,7 @@ class DraggableScrollbar extends StatefulWidget { BoxConstraints? labelConstraints, }) { final scrollThumb = ClipPath( - clipper: ArrowClipper(), + clipper: const ArrowClipper(), child: Container( height: height, width: 20.0, @@ -570,6 +570,7 @@ class ArrowCustomPainter extends CustomPainter { ///This cut 2 lines in arrow shape class ArrowClipper extends CustomClipper { + const ArrowClipper(); @override Path getClip(Size size) { Path path = Path(); diff --git a/mobile/lib/widgets/asset_grid/draggable_scrollbar_custom.dart b/mobile/lib/widgets/asset_grid/draggable_scrollbar_custom.dart index 746bbde6ef..06954f4ff4 100644 --- a/mobile/lib/widgets/asset_grid/draggable_scrollbar_custom.dart +++ b/mobile/lib/widgets/asset_grid/draggable_scrollbar_custom.dart @@ -479,6 +479,7 @@ class ArrowCustomPainter extends CustomPainter { ///This cut 2 lines in arrow shape class ArrowClipper extends CustomClipper { + const ArrowClipper(); @override Path getClip(Size size) { Path path = Path(); diff --git a/mobile/lib/widgets/asset_viewer/advanced_bottom_sheet.dart b/mobile/lib/widgets/asset_viewer/advanced_bottom_sheet.dart index 1e6aba2bda..f6a617bf1c 100644 --- a/mobile/lib/widgets/asset_viewer/advanced_bottom_sheet.dart +++ b/mobile/lib/widgets/asset_viewer/advanced_bottom_sheet.dart @@ -38,7 +38,9 @@ class AdvancedBottomSheet extends HookConsumerWidget { color: context.isDarkTheme ? Colors.grey[900] : Colors.grey[200], - borderRadius: BorderRadius.circular(15.0), + borderRadius: const BorderRadius.all( + Radius.circular(15.0), + ), ), child: Padding( padding: const EdgeInsets.only( diff --git a/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart b/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart index 4ef55f4f76..f47e73ea78 100644 --- a/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart +++ b/mobile/lib/widgets/asset_viewer/gallery_app_bar.dart @@ -83,8 +83,10 @@ class GalleryAppBar extends ConsumerWidget { addToAlbum(Asset addToAlbumAsset) { showModalBottomSheet( elevation: 0, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15.0), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(15.0), + ), ), context: context, builder: (BuildContext _) { diff --git a/mobile/lib/widgets/backup/album_info_card.dart b/mobile/lib/widgets/backup/album_info_card.dart index 526d2199be..fa113c6291 100644 --- a/mobile/lib/widgets/backup/album_info_card.dart +++ b/mobile/lib/widgets/backup/album_info_card.dart @@ -8,8 +8,8 @@ import 'package:immich_mobile/models/backup/available_album.model.dart'; import 'package:immich_mobile/providers/album/album.provider.dart'; import 'package:immich_mobile/providers/app_settings.provider.dart'; import 'package:immich_mobile/providers/backup/backup.provider.dart'; -import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/providers/haptic_feedback.provider.dart'; +import 'package:immich_mobile/routing/router.dart'; import 'package:immich_mobile/services/app_settings.service.dart'; import 'package:immich_mobile/widgets/common/immich_toast.dart'; @@ -46,7 +46,9 @@ class AlbumInfoCard extends HookConsumerWidget { if (isSelected) { return Chip( visualDensity: VisualDensity.compact, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(5)), + ), label: Text( "album_info_card_backup_album_included", style: TextStyle( @@ -60,7 +62,9 @@ class AlbumInfoCard extends HookConsumerWidget { } else if (isExcluded) { return Chip( visualDensity: VisualDensity.compact, - shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(5)), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(5)), + ), label: Text( "album_info_card_backup_album_excluded", style: TextStyle( @@ -125,7 +129,9 @@ class AlbumInfoCard extends HookConsumerWidget { clipBehavior: Clip.hardEdge, margin: const EdgeInsets.all(1), shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), // if you need this + borderRadius: const BorderRadius.all( + Radius.circular(12), // if you need this + ), side: BorderSide( color: isDarkTheme ? const Color.fromARGB(255, 37, 35, 35) diff --git a/mobile/lib/widgets/backup/backup_info_card.dart b/mobile/lib/widgets/backup/backup_info_card.dart index 58fc89cb65..54551da35a 100644 --- a/mobile/lib/widgets/backup/backup_info_card.dart +++ b/mobile/lib/widgets/backup/backup_info_card.dart @@ -18,7 +18,9 @@ class BackupInfoCard extends StatelessWidget { Widget build(BuildContext context) { return Card( shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), // if you need this + borderRadius: const BorderRadius.all( + Radius.circular(20), // if you need this + ), side: BorderSide( color: context.colorScheme.outlineVariant, width: 1, diff --git a/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart b/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart index cc14ffa5fe..9d8be7c6ce 100644 --- a/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart +++ b/mobile/lib/widgets/common/app_bar_dialog/app_bar_dialog.dart @@ -274,8 +274,10 @@ class ImmichAppBarDialog extends HookConsumerWidget { right: horizontalPadding, bottom: isHorizontal ? 20 : 100, ), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(20), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(20), + ), ), child: SizedBox( child: SingleChildScrollView( diff --git a/mobile/lib/widgets/common/app_bar_dialog/app_bar_profile_info.dart b/mobile/lib/widgets/common/app_bar_dialog/app_bar_profile_info.dart index 93cdcd0e6f..0224ff030f 100644 --- a/mobile/lib/widgets/common/app_bar_dialog/app_bar_profile_info.dart +++ b/mobile/lib/widgets/common/app_bar_dialog/app_bar_profile_info.dart @@ -96,8 +96,8 @@ class AppBarProfileInfoBox extends HookConsumerWidget { child: Material( color: context.colorScheme.surfaceContainerHighest, elevation: 3, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(50.0), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(50.0)), ), child: Padding( padding: const EdgeInsets.all(5.0), diff --git a/mobile/lib/widgets/common/app_bar_dialog/app_bar_server_info.dart b/mobile/lib/widgets/common/app_bar_dialog/app_bar_server_info.dart index 0f8ae8b8e1..a867a11e00 100644 --- a/mobile/lib/widgets/common/app_bar_dialog/app_bar_server_info.dart +++ b/mobile/lib/widgets/common/app_bar_dialog/app_bar_server_info.dart @@ -1,10 +1,10 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart' hide Store; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/theme_extensions.dart'; import 'package:immich_mobile/models/server_info/server_info.model.dart'; -import 'package:easy_localization/easy_localization.dart'; import 'package:immich_mobile/providers/locale_provider.dart'; import 'package:immich_mobile/providers/server_info.provider.dart'; import 'package:immich_mobile/utils/url_helper.dart'; @@ -173,7 +173,8 @@ class AppBarServerInfo extends HookConsumerWidget { verticalOffset: 0, decoration: BoxDecoration( color: context.primaryColor.withValues(alpha: 0.9), - borderRadius: BorderRadius.circular(10), + borderRadius: + const BorderRadius.all(Radius.circular(10)), ), textStyle: TextStyle( color: diff --git a/mobile/lib/widgets/common/date_time_picker.dart b/mobile/lib/widgets/common/date_time_picker.dart index 22384ebe8e..064c4845fe 100644 --- a/mobile/lib/widgets/common/date_time_picker.dart +++ b/mobile/lib/widgets/common/date_time_picker.dart @@ -172,11 +172,15 @@ class _DateTimePicker extends HookWidget { ListTile( tileColor: context.colorScheme.surfaceContainerHighest, shape: ShapeBorder.lerp( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), + const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular(10), + ), ), 1, ), diff --git a/mobile/lib/widgets/common/immich_app_bar.dart b/mobile/lib/widgets/common/immich_app_bar.dart index c3bb75afd6..dbf088c112 100644 --- a/mobile/lib/widgets/common/immich_app_bar.dart +++ b/mobile/lib/widgets/common/immich_app_bar.dart @@ -42,7 +42,7 @@ class ImmichAppBar extends ConsumerWidget implements PreferredSizeWidget { useRootNavigator: false, builder: (ctx) => const ImmichAppBarDialog(), ), - borderRadius: BorderRadius.circular(12), + borderRadius: const BorderRadius.all(Radius.circular(12)), child: Badge( label: Container( decoration: BoxDecoration( @@ -120,7 +120,7 @@ class ImmichAppBar extends ConsumerWidget implements PreferredSizeWidget { return InkWell( onTap: () => context.pushRoute(const BackupControllerRoute()), - borderRadius: BorderRadius.circular(12), + borderRadius: const BorderRadius.all(Radius.circular(12)), child: Badge( label: Container( width: widgetSize / 2, diff --git a/mobile/lib/widgets/common/immich_sliver_app_bar.dart b/mobile/lib/widgets/common/immich_sliver_app_bar.dart index 4970a3a0c8..64b5ee0136 100644 --- a/mobile/lib/widgets/common/immich_sliver_app_bar.dart +++ b/mobile/lib/widgets/common/immich_sliver_app_bar.dart @@ -138,7 +138,7 @@ class _ProfileIndicator extends ConsumerWidget { useRootNavigator: false, builder: (ctx) => const ImmichAppBarDialog(), ), - borderRadius: BorderRadius.circular(12), + borderRadius: const BorderRadius.all(Radius.circular(12)), child: Badge( label: Container( decoration: BoxDecoration( @@ -185,7 +185,7 @@ class _BackupIndicator extends ConsumerWidget { return InkWell( onTap: () => context.pushRoute(const BackupControllerRoute()), - borderRadius: BorderRadius.circular(12), + borderRadius: const BorderRadius.all(Radius.circular(12)), child: Badge( label: Container( width: widgetSize / 2, diff --git a/mobile/lib/widgets/common/search_field.dart b/mobile/lib/widgets/common/search_field.dart index 5d71082b24..97ac75a63b 100644 --- a/mobile/lib/widgets/common/search_field.dart +++ b/mobile/lib/widgets/common/search_field.dart @@ -47,25 +47,33 @@ class SearchField extends StatelessWidget { color: context.themeData.colorScheme.onSurfaceSecondary, ), border: OutlineInputBorder( - borderRadius: BorderRadius.circular(25), + borderRadius: const BorderRadius.all( + Radius.circular(25), + ), borderSide: BorderSide( color: context.colorScheme.surfaceDim, ), ), enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(25), + borderRadius: const BorderRadius.all( + Radius.circular(25), + ), borderSide: BorderSide( color: context.colorScheme.surfaceContainer, ), ), disabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(25), + borderRadius: const BorderRadius.all( + Radius.circular(25), + ), borderSide: BorderSide( color: context.colorScheme.surfaceDim, ), ), focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(25), + borderRadius: const BorderRadius.all( + Radius.circular(25), + ), borderSide: BorderSide( color: context.colorScheme.primary.withAlpha(100), ), diff --git a/mobile/lib/widgets/forms/login/login_form.dart b/mobile/lib/widgets/forms/login/login_form.dart index 5374d1ef33..8ccd69930a 100644 --- a/mobile/lib/widgets/forms/login/login_form.dart +++ b/mobile/lib/widgets/forms/login/login_form.dart @@ -394,7 +394,9 @@ class LoginForm extends HookConsumerWidget { decoration: BoxDecoration( color: context.isDarkTheme ? Colors.red.shade700 : Colors.red.shade100, - borderRadius: BorderRadius.circular(8), + borderRadius: const BorderRadius.all( + Radius.circular(8), + ), border: Border.all( color: context.isDarkTheme ? Colors.red.shade900 : Colors.red[200]!, diff --git a/mobile/lib/widgets/map/map_app_bar.dart b/mobile/lib/widgets/map/map_app_bar.dart index 4de5721486..ccadd2ad15 100644 --- a/mobile/lib/widgets/map/map_app_bar.dart +++ b/mobile/lib/widgets/map/map_app_bar.dart @@ -4,12 +4,12 @@ import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/providers/map/map_state.provider.dart'; -import 'package:immich_mobile/widgets/map/map_settings_sheet.dart'; -import 'package:immich_mobile/entities/asset.entity.dart'; import 'package:immich_mobile/utils/immich_loading_overlay.dart'; import 'package:immich_mobile/utils/selection_handlers.dart'; +import 'package:immich_mobile/widgets/map/map_settings_sheet.dart'; class MapAppBar extends HookWidget implements PreferredSizeWidget { final ValueNotifier> selectedAssets; @@ -24,7 +24,7 @@ class MapAppBar extends HookWidget implements PreferredSizeWidget { valueListenable: selectedAssets, builder: (ctx, value, child) => value.isNotEmpty ? _SelectionRow(selectedAssets: selectedAssets) - : _NonSelectionRow(), + : const _NonSelectionRow(), ), ); } @@ -34,6 +34,8 @@ class MapAppBar extends HookWidget implements PreferredSizeWidget { } class _NonSelectionRow extends StatelessWidget { + const _NonSelectionRow(); + @override Widget build(BuildContext context) { void onSettingsPressed() { diff --git a/mobile/lib/widgets/map/map_asset_grid.dart b/mobile/lib/widgets/map/map_asset_grid.dart index 4a3bb69cc0..c8c0816551 100644 --- a/mobile/lib/widgets/map/map_asset_grid.dart +++ b/mobile/lib/widgets/map/map_asset_grid.dart @@ -185,7 +185,7 @@ class MapAssetGrid extends HookConsumerWidget { }, loading: () => const SizedBox.shrink(), ) - : _MapNoAssetsInSheet(), + : const _MapNoAssetsInSheet(), ), ), _MapSheetDragRegion( @@ -201,6 +201,8 @@ class MapAssetGrid extends HookConsumerWidget { } class _MapNoAssetsInSheet extends StatelessWidget { + const _MapNoAssetsInSheet(); + @override Widget build(BuildContext context) { const image = Image( diff --git a/mobile/lib/widgets/map/positioned_asset_marker_icon.dart b/mobile/lib/widgets/map/positioned_asset_marker_icon.dart index 2cf82517ae..5ad49b42f8 100644 --- a/mobile/lib/widgets/map/positioned_asset_marker_icon.dart +++ b/mobile/lib/widgets/map/positioned_asset_marker_icon.dart @@ -108,7 +108,7 @@ class _PinPainter extends CustomPainter { final double primaryRadius; final double secondaryRadius; - _PinPainter({ + const _PinPainter({ required this.primaryColor, required this.secondaryColor, required this.primaryRadius, diff --git a/mobile/lib/widgets/memories/memory_card.dart b/mobile/lib/widgets/memories/memory_card.dart index abe3586194..31f4d5ed94 100644 --- a/mobile/lib/widgets/memories/memory_card.dart +++ b/mobile/lib/widgets/memories/memory_card.dart @@ -26,9 +26,9 @@ class MemoryCard extends StatelessWidget { Widget build(BuildContext context) { return Card( color: Colors.black, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(25.0), - side: const BorderSide( + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(25.0)), + side: BorderSide( color: Colors.black, width: 1.0, ), diff --git a/mobile/lib/widgets/photo_view/photo_view_gallery.dart b/mobile/lib/widgets/photo_view/photo_view_gallery.dart index b8918309bc..26c292d678 100644 --- a/mobile/lib/widgets/photo_view/photo_view_gallery.dart +++ b/mobile/lib/widgets/photo_view/photo_view_gallery.dart @@ -12,7 +12,6 @@ import 'package:immich_mobile/widgets/photo_view/photo_view.dart' PhotoViewImageScaleEndCallback, PhotoViewImageLongPressStartCallback, ScaleStateCycle; - import 'package:immich_mobile/widgets/photo_view/src/controller/photo_view_controller.dart'; import 'package:immich_mobile/widgets/photo_view/src/controller/photo_view_scalestate_controller.dart'; import 'package:immich_mobile/widgets/photo_view/src/core/photo_view_gesture_detector.dart'; @@ -358,7 +357,7 @@ class PhotoViewGalleryPageOptions { childSize = null, assert(imageProvider != null); - PhotoViewGalleryPageOptions.customChild({ + const PhotoViewGalleryPageOptions.customChild({ required this.child, this.childSize, this.heroAttributes, diff --git a/mobile/lib/widgets/search/person_name_edit_form.dart b/mobile/lib/widgets/search/person_name_edit_form.dart index 76d6e80832..886f17b2cc 100644 --- a/mobile/lib/widgets/search/person_name_edit_form.dart +++ b/mobile/lib/widgets/search/person_name_edit_form.dart @@ -9,7 +9,7 @@ class PersonNameEditFormResult { final bool success; final String updatedName; - PersonNameEditFormResult(this.success, this.updatedName); + const PersonNameEditFormResult(this.success, this.updatedName); } class PersonNameEditForm extends HookConsumerWidget { @@ -47,7 +47,7 @@ class PersonNameEditForm extends HookConsumerWidget { actions: [ TextButton( onPressed: () => context.pop( - PersonNameEditFormResult(false, ''), + const PersonNameEditFormResult(false, ''), ), child: Text( "cancel", diff --git a/mobile/lib/widgets/search/search_filter/common/dropdown.dart b/mobile/lib/widgets/search/search_filter/common/dropdown.dart index dd8785459f..dd0ec44e45 100644 --- a/mobile/lib/widgets/search/search_filter/common/dropdown.dart +++ b/mobile/lib/widgets/search/search_filter/common/dropdown.dart @@ -18,10 +18,10 @@ class SearchDropdown extends StatelessWidget { @override Widget build(BuildContext context) { - final menuStyle = MenuStyle( + final menuStyle = const MenuStyle( shape: WidgetStatePropertyAll( RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15), + borderRadius: BorderRadius.all(Radius.circular(15)), ), ), ); diff --git a/mobile/lib/widgets/settings/backup_settings/background_settings.dart b/mobile/lib/widgets/settings/backup_settings/background_settings.dart index d628309050..619a410545 100644 --- a/mobile/lib/widgets/settings/backup_settings/background_settings.dart +++ b/mobile/lib/widgets/settings/backup_settings/background_settings.dart @@ -97,7 +97,7 @@ class BackgroundBackupSettings extends ConsumerWidget { onBatteryInfo: showBatteryOptimizationInfoToUser, ), if (Platform.isIOS && iosSettings?.appRefreshEnabled != true) - _IOSBackgroundRefreshDisabled(), + const _IOSBackgroundRefreshDisabled(), if (Platform.isIOS && iosSettings != null) IosDebugInfoTile(settings: iosSettings), ], @@ -106,6 +106,8 @@ class BackgroundBackupSettings extends ConsumerWidget { } class _IOSBackgroundRefreshDisabled extends StatelessWidget { + const _IOSBackgroundRefreshDisabled(); + @override Widget build(BuildContext context) { return SettingsButtonListTile( diff --git a/mobile/lib/widgets/settings/networking_settings/external_network_preference.dart b/mobile/lib/widgets/settings/networking_settings/external_network_preference.dart index 633d84c9c8..d38ba06d76 100644 --- a/mobile/lib/widgets/settings/networking_settings/external_network_preference.dart +++ b/mobile/lib/widgets/settings/networking_settings/external_network_preference.dart @@ -17,8 +17,9 @@ class ExternalNetworkPreference extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final entries = - useState([AuxilaryEndpoint(url: '', status: AuxCheckStatus.unknown)]); + final entries = useState( + [const AuxilaryEndpoint(url: '', status: AuxCheckStatus.unknown)], + ); final canSave = useState(false); saveEndpointList() { @@ -169,7 +170,7 @@ class ExternalNetworkPreference extends HookConsumerWidget { ? () { entries.value = [ ...entries.value, - AuxilaryEndpoint( + const AuxilaryEndpoint( url: '', status: AuxCheckStatus.unknown, ), diff --git a/mobile/lib/widgets/settings/preference_settings/primary_color_setting.dart b/mobile/lib/widgets/settings/preference_settings/primary_color_setting.dart index af34ab9e16..011904c310 100644 --- a/mobile/lib/widgets/settings/preference_settings/primary_color_setting.dart +++ b/mobile/lib/widgets/settings/preference_settings/primary_color_setting.dart @@ -7,9 +7,9 @@ import 'package:immich_mobile/extensions/build_context_extensions.dart'; import 'package:immich_mobile/extensions/theme_extensions.dart'; import 'package:immich_mobile/providers/theme.provider.dart'; import 'package:immich_mobile/services/app_settings.service.dart'; -import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart'; import 'package:immich_mobile/theme/color_scheme.dart'; import 'package:immich_mobile/theme/dynamic_theme.dart'; +import 'package:immich_mobile/utils/hooks/app_settings_update_hook.dart'; class PrimaryColorSetting extends HookConsumerWidget { const PrimaryColorSetting({ @@ -136,8 +136,8 @@ class PrimaryColorSetting extends HookConsumerWidget { dense: true, activeColor: context.primaryColor, tileColor: context.colorScheme.surfaceContainerHigh, - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(15), + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all(Radius.circular(15)), ), title: Text( 'theme_setting_system_primary_color_title'.tr(), diff --git a/mobile/lib/widgets/settings/settings_radio_list_tile.dart b/mobile/lib/widgets/settings/settings_radio_list_tile.dart index 1c26682a65..3f3a6cbe69 100644 --- a/mobile/lib/widgets/settings/settings_radio_list_tile.dart +++ b/mobile/lib/widgets/settings/settings_radio_list_tile.dart @@ -5,7 +5,7 @@ class SettingsRadioGroup { final String title; final T value; - SettingsRadioGroup({required this.title, required this.value}); + const SettingsRadioGroup({required this.title, required this.value}); } class SettingsRadioListTile extends StatelessWidget { diff --git a/mobile/lib/widgets/shared_link/shared_link_item.dart b/mobile/lib/widgets/shared_link/shared_link_item.dart index 69e763ea09..a9707eb0d3 100644 --- a/mobile/lib/widgets/shared_link/shared_link_item.dart +++ b/mobile/lib/widgets/shared_link/shared_link_item.dart @@ -240,7 +240,7 @@ class SharedLinkItem extends ConsumerWidget { verticalOffset: 0, decoration: BoxDecoration( color: colorScheme.primary.withValues(alpha: 0.9), - borderRadius: BorderRadius.circular(10), + borderRadius: const BorderRadius.all(Radius.circular(10)), ), textStyle: TextStyle( color: isDarkMode ? Colors.black : Colors.white, @@ -268,7 +268,7 @@ class SharedLinkItem extends ConsumerWidget { verticalOffset: 0, decoration: BoxDecoration( color: colorScheme.primary.withValues(alpha: 0.9), - borderRadius: BorderRadius.circular(10), + borderRadius: const BorderRadius.all(Radius.circular(10)), ), textStyle: TextStyle( color: isDarkMode ? Colors.black : Colors.white, diff --git a/mobile/test/domain/services/log_service_test.dart b/mobile/test/domain/services/log_service_test.dart index 23bdcc9909..3efa717f97 100644 --- a/mobile/test/domain/services/log_service_test.dart +++ b/mobile/test/domain/services/log_service_test.dart @@ -121,7 +121,6 @@ void main() { time.elapse(const Duration(seconds: 6)); final insert = verify(() => mockLogRepo.insertAll(captureAny())); insert.called(1); - // ignore: prefer-correct-json-casts final captured = insert.captured.firstOrNull as List; expect(captured.firstOrNull?.message, _kInfoLog.message); expect(captured.firstOrNull?.logger, _kInfoLog.logger); diff --git a/mobile/test/domain/services/sync_stream_service_test.dart b/mobile/test/domain/services/sync_stream_service_test.dart index 03d481f9f3..2922358ff4 100644 --- a/mobile/test/domain/services/sync_stream_service_test.dart +++ b/mobile/test/domain/services/sync_stream_service_test.dart @@ -1,5 +1,3 @@ -// ignore_for_file: avoid-declaring-call-method, avoid-unnecessary-futures - import 'dart:async'; import 'package:flutter_test/flutter_test.dart'; @@ -46,7 +44,6 @@ void main() { when(() => mockSyncApiRepo.streamChanges(any())) .thenAnswer((invocation) async { - // ignore: avoid-unsafe-collection-methods handleEventsCallback = invocation.positionalArguments.first; }); diff --git a/mobile/test/modules/map/map_theme_override_test.dart b/mobile/test/modules/map/map_theme_override_test.dart index 5a6b163c04..db133d5c34 100644 --- a/mobile/test/modules/map/map_theme_override_test.dart +++ b/mobile/test/modules/map/map_theme_override_test.dart @@ -28,7 +28,7 @@ void main() { }); setUp(() async { - mapState = MapState(themeMode: ThemeMode.dark); + mapState = const MapState(themeMode: ThemeMode.dark); mapStateNotifier = MockMapStateNotifier(mapState); await StoreService.init(storeRepository: IsarStoreRepository(db)); overrides = [ diff --git a/mobile/test/services/auth.service_test.dart b/mobile/test/services/auth.service_test.dart index 4ada98a6c9..46ad8bbc4c 100644 --- a/mobile/test/services/auth.service_test.dart +++ b/mobile/test/services/auth.service_test.dart @@ -187,7 +187,7 @@ void main() { when(() => authRepository.getPreferredWifiName()) .thenReturn('DifferentWifi'); when(() => authRepository.getExternalEndpointList()).thenReturn([ - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint', status: AuxCheckStatus.valid, ), @@ -214,11 +214,11 @@ void main() { when(() => authRepository.getPreferredWifiName()) .thenReturn('DifferentWifi'); when(() => authRepository.getExternalEndpointList()).thenReturn([ - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint', status: AuxCheckStatus.valid, ), - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint2', status: AuxCheckStatus.valid, ), @@ -249,11 +249,11 @@ void main() { when(() => authRepository.getPreferredWifiName()) .thenReturn('DifferentWifi'); when(() => authRepository.getExternalEndpointList()).thenReturn([ - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint', status: AuxCheckStatus.valid, ), - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint2', status: AuxCheckStatus.valid, ), @@ -302,7 +302,7 @@ void main() { when(() => authRepository.getPreferredWifiName()) .thenReturn('DifferentWifi'); when(() => authRepository.getExternalEndpointList()).thenReturn([ - AuxilaryEndpoint( + const AuxilaryEndpoint( url: 'https://external.endpoint', status: AuxCheckStatus.valid, ), diff --git a/mobile/test/test_utils.dart b/mobile/test/test_utils.dart index c0f789795c..596d3bcd1c 100644 --- a/mobile/test/test_utils.dart +++ b/mobile/test/test_utils.dart @@ -24,7 +24,6 @@ import 'mock_http_override.dart'; // Listener Mock to test when a provider notifies its listeners class ListenerMock extends Mock { - // ignore: avoid-declaring-call-method void call(T? previous, T next); }