瀏覽代碼

chore(mobile): clean up linter problems (#1000)

Alex 2 年之前
父節點
當前提交
39b7ab66d4
共有 32 個文件被更改,包括 188 次插入173 次删除
  1. 4 1
      mobile/lib/modules/album/services/album.service.dart
  2. 12 12
      mobile/lib/modules/album/ui/album_viewer_appbar.dart
  3. 15 15
      mobile/lib/modules/album/ui/album_viewer_thumbnail.dart
  4. 5 5
      mobile/lib/modules/album/ui/month_group_title.dart
  5. 2 2
      mobile/lib/modules/album/ui/selection_thumbnail_image.dart
  6. 18 17
      mobile/lib/modules/album/views/album_viewer_page.dart
  7. 4 4
      mobile/lib/modules/album/views/asset_selection_page.dart
  8. 20 20
      mobile/lib/modules/album/views/create_album_page.dart
  9. 6 6
      mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart
  10. 6 7
      mobile/lib/modules/album/views/select_user_for_sharing_page.dart
  11. 4 4
      mobile/lib/modules/album/views/sharing_page.dart
  12. 3 1
      mobile/lib/modules/asset_viewer/providers/image_viewer_page_state.provider.dart
  13. 4 4
      mobile/lib/modules/asset_viewer/ui/exif_bottom_sheet.dart
  14. 2 0
      mobile/lib/modules/backup/background_service/localization.dart
  15. 4 4
      mobile/lib/modules/backup/ui/album_info_card.dart
  16. 5 3
      mobile/lib/modules/backup/views/album_preview_page.dart
  17. 6 6
      mobile/lib/modules/backup/views/backup_album_selection_page.dart
  18. 22 22
      mobile/lib/modules/backup/views/backup_controller_page.dart
  19. 1 1
      mobile/lib/modules/home/services/asset.service.dart
  20. 4 4
      mobile/lib/modules/home/ui/profile_drawer/profile_drawer.dart
  21. 5 5
      mobile/lib/modules/home/ui/profile_drawer/profile_drawer_header.dart
  22. 2 2
      mobile/lib/modules/home/ui/profile_drawer/server_info_box.dart
  23. 1 1
      mobile/lib/modules/login/providers/oauth.provider.dart
  24. 1 1
      mobile/lib/modules/login/ui/login_form.dart
  25. 7 7
      mobile/lib/modules/search/views/search_page.dart
  26. 8 8
      mobile/lib/modules/search/views/search_result_page.dart
  27. 0 1
      mobile/lib/modules/settings/views/settings_page.dart
  28. 5 2
      mobile/lib/shared/providers/asset.provider.dart
  29. 5 4
      mobile/lib/shared/providers/release_info.provider.dart
  30. 1 0
      mobile/lib/shared/services/cache.service.dart
  31. 4 4
      mobile/lib/shared/ui/immich_toast.dart
  32. 2 0
      mobile/lib/utils/immich_cache_info_repository.dart

+ 4 - 1
mobile/lib/modules/album/services/album.service.dart

@@ -69,7 +69,10 @@ class AlbumService {
     Iterable<Asset> assets,
   ) async {
     return createAlbum(
-        _getNextAlbumName(await getAlbums(isShared: false)), assets, []);
+      _getNextAlbumName(await getAlbums(isShared: false)),
+      assets,
+      [],
+    );
   }
 
   Future<AlbumResponseDto?> getAlbumDetail(String albumId) async {

+ 12 - 12
mobile/lib/modules/album/ui/album_viewer_appbar.dart

@@ -34,7 +34,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
     final newAlbumTitle = ref.watch(albumViewerProvider).editTitleText;
     final isEditAlbum = ref.watch(albumViewerProvider).isEditAlbum;
 
-    void _onDeleteAlbumPressed(String albumId) async {
+    void onDeleteAlbumPressed(String albumId) async {
       ImmichLoadingOverlayController.appLoader.show();
 
       bool isSuccess =
@@ -62,7 +62,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
       ImmichLoadingOverlayController.appLoader.hide();
     }
 
-    void _onLeaveAlbumPressed(String albumId) async {
+    void onLeaveAlbumPressed(String albumId) async {
       ImmichLoadingOverlayController.appLoader.show();
 
       bool isSuccess =
@@ -84,7 +84,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
       ImmichLoadingOverlayController.appLoader.hide();
     }
 
-    void _onRemoveFromAlbumPressed(String albumId) async {
+    void onRemoveFromAlbumPressed(String albumId) async {
       ImmichLoadingOverlayController.appLoader.show();
 
       bool isSuccess =
@@ -110,7 +110,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
       ImmichLoadingOverlayController.appLoader.hide();
     }
 
-    _buildBottomSheetActionButton() {
+    buildBottomSheetActionButton() {
       if (isMultiSelectionEnable) {
         if (albumInfo.ownerId == userId) {
           return ListTile(
@@ -119,7 +119,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
               'album_viewer_appbar_share_remove',
               style: TextStyle(fontWeight: FontWeight.bold),
             ).tr(),
-            onTap: () => _onRemoveFromAlbumPressed(albumId),
+            onTap: () => onRemoveFromAlbumPressed(albumId),
           );
         } else {
           return const SizedBox();
@@ -132,7 +132,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
               'album_viewer_appbar_share_delete',
               style: TextStyle(fontWeight: FontWeight.bold),
             ).tr(),
-            onTap: () => _onDeleteAlbumPressed(albumId),
+            onTap: () => onDeleteAlbumPressed(albumId),
           );
         } else {
           return ListTile(
@@ -141,13 +141,13 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
               'album_viewer_appbar_share_leave',
               style: TextStyle(fontWeight: FontWeight.bold),
             ).tr(),
-            onTap: () => _onLeaveAlbumPressed(albumId),
+            onTap: () => onLeaveAlbumPressed(albumId),
           );
         }
       }
     }
 
-    void _buildBottomSheet() {
+    void buildBottomSheet() {
       showModalBottomSheet(
         backgroundColor: Theme.of(context).scaffoldBackgroundColor,
         isScrollControlled: false,
@@ -157,7 +157,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
             child: Column(
               mainAxisSize: MainAxisSize.min,
               children: [
-                _buildBottomSheetActionButton(),
+                buildBottomSheetActionButton(),
               ],
             ),
           );
@@ -165,7 +165,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
       );
     }
 
-    _buildLeadingButton() {
+    buildLeadingButton() {
       if (isMultiSelectionEnable) {
         return IconButton(
           onPressed: () => ref
@@ -204,7 +204,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
 
     return AppBar(
       elevation: 0,
-      leading: _buildLeadingButton(),
+      leading: buildLeadingButton(),
       title: isMultiSelectionEnable
           ? Text('${selectedAssetsInAlbum.length}')
           : null,
@@ -212,7 +212,7 @@ class AlbumViewerAppbar extends HookConsumerWidget with PreferredSizeWidget {
       actions: [
         IconButton(
           splashRadius: 25,
-          onPressed: _buildBottomSheet,
+          onPressed: buildBottomSheet,
           icon: const Icon(Icons.more_horiz_rounded),
         ),
       ],

+ 15 - 15
mobile/lib/modules/album/ui/album_viewer_thumbnail.dart

@@ -27,7 +27,7 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
     final isMultiSelectionEnable =
         ref.watch(assetSelectionProvider).isMultiselectEnable;
 
-    _viewAsset() {
+    viewAsset() {
       AutoRouter.of(context).push(
         GalleryViewerRoute(
           asset: asset,
@@ -47,18 +47,18 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
       }
     }
 
-    _enableMultiSelection() {
+    enableMultiSelection() {
       ref.watch(assetSelectionProvider.notifier).enableMultiselection();
       ref
           .watch(assetSelectionProvider.notifier)
           .addAssetsInAlbumViewer([asset]);
     }
 
-    _disableMultiSelection() {
+    disableMultiSelection() {
       ref.watch(assetSelectionProvider.notifier).disableMultiselection();
     }
 
-    _buildVideoLabel() {
+    buildVideoLabel() {
       return Positioned(
         top: 5,
         right: 5,
@@ -80,7 +80,7 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
       );
     }
 
-    _buildAssetStoreLocationIcon() {
+    buildAssetStoreLocationIcon() {
       return Positioned(
         right: 10,
         bottom: 5,
@@ -94,7 +94,7 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
       );
     }
 
-    _buildAssetSelectionIcon() {
+    buildAssetSelectionIcon() {
       bool isSelected = selectedAssetsInAlbumViewer.contains(asset);
 
       return Positioned(
@@ -112,21 +112,21 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
       );
     }
 
-    _buildThumbnailImage() {
+    buildThumbnailImage() {
       return Container(
         decoration: BoxDecoration(border: drawBorderColor()),
         child: ImmichImage(asset, width: 300, height: 300),
       );
     }
 
-    _handleSelectionGesture() {
+    handleSelectionGesture() {
       if (selectedAssetsInAlbumViewer.contains(asset)) {
         ref
             .watch(assetSelectionProvider.notifier)
             .removeAssetsInAlbumViewer([asset]);
 
         if (selectedAssetsInAlbumViewer.isEmpty) {
-          _disableMultiSelection();
+          disableMultiSelection();
         }
       } else {
         ref
@@ -136,14 +136,14 @@ class AlbumViewerThumbnail extends HookConsumerWidget {
     }
 
     return GestureDetector(
-      onTap: isMultiSelectionEnable ? _handleSelectionGesture : _viewAsset,
-      onLongPress: _enableMultiSelection,
+      onTap: isMultiSelectionEnable ? handleSelectionGesture : viewAsset,
+      onLongPress: enableMultiSelection,
       child: Stack(
         children: [
-          _buildThumbnailImage(),
-          if (showStorageIndicator) _buildAssetStoreLocationIcon(),
-          if (!asset.isImage) _buildVideoLabel(),
-          if (isMultiSelectionEnable) _buildAssetSelectionIcon(),
+          buildThumbnailImage(),
+          if (showStorageIndicator) buildAssetStoreLocationIcon(),
+          if (!asset.isImage) buildVideoLabel(),
+          if (isMultiSelectionEnable) buildAssetSelectionIcon(),
         ],
       ),
     );

+ 5 - 5
mobile/lib/modules/album/ui/month_group_title.dart

@@ -21,7 +21,7 @@ class MonthGroupTitle extends HookConsumerWidget {
         ref.watch(assetSelectionProvider).selectedNewAssetsForAlbum;
     final isAlbumExist = ref.watch(assetSelectionProvider).isAlbumExist;
 
-    _handleTitleIconClick() {
+    handleTitleIconClick() {
       HapticFeedback.heavyImpact();
 
       if (isAlbumExist) {
@@ -61,7 +61,7 @@ class MonthGroupTitle extends HookConsumerWidget {
       }
     }
 
-    _getSimplifiedMonth() {
+    getSimplifiedMonth() {
       var monthAndYear = month.split(',');
       var yearText = monthAndYear[1].trim();
       var monthText = monthAndYear[0].trim();
@@ -85,7 +85,7 @@ class MonthGroupTitle extends HookConsumerWidget {
         child: Row(
           children: [
             GestureDetector(
-              onTap: _handleTitleIconClick,
+              onTap: handleTitleIconClick,
               child: selectedDateGroup.contains(month)
                   ? Icon(
                       Icons.check_circle_rounded,
@@ -97,11 +97,11 @@ class MonthGroupTitle extends HookConsumerWidget {
                     ),
             ),
             GestureDetector(
-              onTap: _handleTitleIconClick,
+              onTap: handleTitleIconClick,
               child: Padding(
                 padding: const EdgeInsets.only(left: 8.0),
                 child: Text(
-                  _getSimplifiedMonth(),
+                  getSimplifiedMonth(),
                   style: TextStyle(
                     fontSize: 24,
                     color: Theme.of(context).primaryColor,

+ 2 - 2
mobile/lib/modules/album/ui/selection_thumbnail_image.dart

@@ -18,7 +18,7 @@ class SelectionThumbnailImage extends HookConsumerWidget {
         ref.watch(assetSelectionProvider).selectedAdditionalAssetsForAlbum;
     var isAlbumExist = ref.watch(assetSelectionProvider).isAlbumExist;
 
-    Widget _buildSelectionIcon(Asset asset) {
+    Widget buildSelectionIcon(Asset asset) {
       var isSelected = selectedAsset.map((item) => item.id).contains(asset.id);
       var isNewlySelected =
           newAssetsForAlbum.map((item) => item.id).contains(asset.id);
@@ -111,7 +111,7 @@ class SelectionThumbnailImage extends HookConsumerWidget {
             padding: const EdgeInsets.all(3.0),
             child: Align(
               alignment: Alignment.topLeft,
-              child: _buildSelectionIcon(asset),
+              child: buildSelectionIcon(asset),
             ),
           ),
           if (!asset.isImage)

+ 18 - 17
mobile/lib/modules/album/views/album_viewer_page.dart

@@ -37,7 +37,7 @@ class AlbumViewerPage extends HookConsumerWidget {
 
     /// Find out if the assets in album exist on the device
     /// If they exist, add to selected asset state to show they are already selected.
-    void _onAddPhotosPressed(AlbumResponseDto albumInfo) async {
+    void onAddPhotosPressed(AlbumResponseDto albumInfo) async {
       if (albumInfo.assets.isNotEmpty == true) {
         ref.watch(assetSelectionProvider.notifier).addNewAssets(
               albumInfo.assets.map((e) => Asset.remote(e)).toList(),
@@ -60,7 +60,8 @@ class AlbumViewerPage extends HookConsumerWidget {
                     albumId,
                   );
 
-          if (addAssetsResult != null && addAssetsResult.successfullyAdded > 0) {
+          if (addAssetsResult != null &&
+              addAssetsResult.successfullyAdded > 0) {
             ref.refresh(sharedAlbumDetailProvider(albumId));
           }
 
@@ -73,7 +74,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       }
     }
 
-    void _onAddUsersPressed(AlbumResponseDto albumInfo) async {
+    void onAddUsersPressed(AlbumResponseDto albumInfo) async {
       List<String>? sharedUserIds =
           await AutoRouter.of(context).push<List<String>?>(
         SelectAdditionalUserForSharingRoute(albumInfo: albumInfo),
@@ -94,7 +95,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       }
     }
 
-    Widget _buildTitle(AlbumResponseDto albumInfo) {
+    Widget buildTitle(AlbumResponseDto albumInfo) {
       return Padding(
         padding: const EdgeInsets.only(left: 8, right: 8, top: 16),
         child: userId == albumInfo.ownerId
@@ -115,7 +116,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       );
     }
 
-    Widget _buildAlbumDateRange(AlbumResponseDto albumInfo) {
+    Widget buildAlbumDateRange(AlbumResponseDto albumInfo) {
       String startDate = "";
       DateTime parsedStartDate =
           DateTime.parse(albumInfo.assets.first.createdAt);
@@ -148,14 +149,14 @@ class AlbumViewerPage extends HookConsumerWidget {
       );
     }
 
-    Widget _buildHeader(AlbumResponseDto albumInfo) {
+    Widget buildHeader(AlbumResponseDto albumInfo) {
       return SliverToBoxAdapter(
         child: Column(
           crossAxisAlignment: CrossAxisAlignment.start,
           children: [
-            _buildTitle(albumInfo),
+            buildTitle(albumInfo),
             if (albumInfo.assets.isNotEmpty == true)
-              _buildAlbumDateRange(albumInfo),
+              buildAlbumDateRange(albumInfo),
             if (albumInfo.shared)
               SizedBox(
                 height: 60,
@@ -188,7 +189,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       );
     }
 
-    Widget _buildImageGrid(AlbumResponseDto albumInfo) {
+    Widget buildImageGrid(AlbumResponseDto albumInfo) {
       final appSettingService = ref.watch(appSettingsServiceProvider);
       final bool showStorageIndicator =
           appSettingService.getSetting(AppSettingsEnum.storageIndicator);
@@ -220,7 +221,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       return const SliverToBoxAdapter();
     }
 
-    Widget _buildControlButton(AlbumResponseDto albumInfo) {
+    Widget buildControlButton(AlbumResponseDto albumInfo) {
       return Padding(
         padding: const EdgeInsets.only(left: 16.0, top: 8, bottom: 8),
         child: SizedBox(
@@ -230,13 +231,13 @@ class AlbumViewerPage extends HookConsumerWidget {
             children: [
               AlbumActionOutlinedButton(
                 iconData: Icons.add_photo_alternate_outlined,
-                onPressed: () => _onAddPhotosPressed(albumInfo),
+                onPressed: () => onAddPhotosPressed(albumInfo),
                 labelText: "share_add_photos".tr(),
               ),
               if (userId == albumInfo.ownerId)
                 AlbumActionOutlinedButton(
                   iconData: Icons.person_add_alt_rounded,
-                  onPressed: () => _onAddUsersPressed(albumInfo),
+                  onPressed: () => onAddUsersPressed(albumInfo),
                   labelText: "album_viewer_page_share_add_users".tr(),
                 ),
             ],
@@ -245,7 +246,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       );
     }
 
-    Widget _buildBody(AlbumResponseDto albumInfo) {
+    Widget buildBody(AlbumResponseDto albumInfo) {
       return GestureDetector(
         onTap: () {
           titleFocusNode.unfocus();
@@ -257,7 +258,7 @@ class AlbumViewerPage extends HookConsumerWidget {
           child: CustomScrollView(
             controller: scrollController,
             slivers: [
-              _buildHeader(albumInfo),
+              buildHeader(albumInfo),
               SliverPersistentHeader(
                 pinned: true,
                 delegate: ImmichSliverPersistentAppBarDelegate(
@@ -265,11 +266,11 @@ class AlbumViewerPage extends HookConsumerWidget {
                   maxHeight: 50,
                   child: Container(
                     color: Theme.of(context).scaffoldBackgroundColor,
-                    child: _buildControlButton(albumInfo),
+                    child: buildControlButton(albumInfo),
                   ),
                 ),
               ),
-              _buildImageGrid(albumInfo)
+              buildImageGrid(albumInfo)
             ],
           ),
         ),
@@ -293,7 +294,7 @@ class AlbumViewerPage extends HookConsumerWidget {
       ),
       body: albumInfo.when(
         data: (albumInfo) => albumInfo != null
-            ? _buildBody(albumInfo)
+            ? buildBody(albumInfo)
             : const Center(
                 child: CircularProgressIndicator(),
               ),

+ 4 - 4
mobile/lib/modules/album/views/asset_selection_page.dart

@@ -25,7 +25,7 @@ class AssetSelectionPage extends HookConsumerWidget {
 
     List<Widget> imageGridGroup = [];
 
-    String _buildAssetCountText() {
+    String buildAssetCountText() {
       if (isAlbumExist) {
         return (selectedAssets.length + newAssetsForAlbum.length).toString();
       } else {
@@ -33,7 +33,7 @@ class AssetSelectionPage extends HookConsumerWidget {
       }
     }
 
-    Widget _buildBody() {
+    Widget buildBody() {
       assetGroupMonthYear.forEach((monthYear, assetGroup) {
         imageGridGroup
             .add(MonthGroupTitle(month: monthYear, assetGroup: assetGroup));
@@ -71,7 +71,7 @@ class AssetSelectionPage extends HookConsumerWidget {
                 style: TextStyle(fontSize: 18),
               ).tr()
             : Text(
-                _buildAssetCountText(),
+                buildAssetCountText(),
                 style: const TextStyle(fontSize: 18),
               ),
         centerTitle: false,
@@ -94,7 +94,7 @@ class AssetSelectionPage extends HookConsumerWidget {
             ),
         ],
       ),
-      body: _buildBody(),
+      body: buildBody(),
     );
   }
 }

+ 20 - 20
mobile/lib/modules/album/views/create_album_page.dart

@@ -29,11 +29,11 @@ class CreateAlbumPage extends HookConsumerWidget {
         ref.watch(assetSelectionProvider).selectedNewAssetsForAlbum;
     final isDarkTheme = Theme.of(context).brightness == Brightness.dark;
 
-    _showSelectUserPage() {
+    showSelectUserPage() {
       AutoRouter.of(context).push(const SelectUserForSharingRoute());
     }
 
-    void _onBackgroundTapped() {
+    void onBackgroundTapped() {
       albumTitleTextFieldFocusNode.unfocus();
       isAlbumTitleTextFieldFocus.value = false;
 
@@ -45,7 +45,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       }
     }
 
-    _onSelectPhotosButtonPressed() async {
+    onSelectPhotosButtonPressed() async {
       ref.watch(assetSelectionProvider.notifier).setIsAlbumExist(false);
 
       AssetSelectionPageResult? selectedAsset = await AutoRouter.of(context)
@@ -56,7 +56,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       }
     }
 
-    _buildTitleInputField() {
+    buildTitleInputField() {
       return Padding(
         padding: const EdgeInsets.only(
           right: 10,
@@ -71,7 +71,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       );
     }
 
-    _buildTitle() {
+    buildTitle() {
       if (selectedAssets.isEmpty) {
         return SliverToBoxAdapter(
           child: Padding(
@@ -90,7 +90,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       return const SliverToBoxAdapter();
     }
 
-    _buildSelectPhotosButton() {
+    buildSelectPhotosButton() {
       if (selectedAssets.isEmpty) {
         return SliverToBoxAdapter(
           child: Padding(
@@ -109,7 +109,7 @@ class CreateAlbumPage extends HookConsumerWidget {
                   borderRadius: BorderRadius.circular(5),
                 ),
               ),
-              onPressed: _onSelectPhotosButtonPressed,
+              onPressed: onSelectPhotosButtonPressed,
               icon: Icon(
                 Icons.add_rounded,
                 color: Theme.of(context).primaryColor,
@@ -132,7 +132,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       return const SliverToBoxAdapter();
     }
 
-    _buildControlButton() {
+    buildControlButton() {
       return Padding(
         padding: const EdgeInsets.only(left: 12.0, top: 16, bottom: 16),
         child: SizedBox(
@@ -142,7 +142,7 @@ class CreateAlbumPage extends HookConsumerWidget {
             children: [
               AlbumActionOutlinedButton(
                 iconData: Icons.add_photo_alternate_outlined,
-                onPressed: _onSelectPhotosButtonPressed,
+                onPressed: onSelectPhotosButtonPressed,
                 labelText: "share_add_photos".tr(),
               ),
             ],
@@ -151,7 +151,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       );
     }
 
-    _buildSelectedImageGrid() {
+    buildSelectedImageGrid() {
       if (selectedAssets.isNotEmpty) {
         return SliverPadding(
           padding: const EdgeInsets.only(top: 16),
@@ -164,7 +164,7 @@ class CreateAlbumPage extends HookConsumerWidget {
             delegate: SliverChildBuilderDelegate(
               (BuildContext context, int index) {
                 return GestureDetector(
-                  onTap: _onBackgroundTapped,
+                  onTap: onBackgroundTapped,
                   child: SharedAlbumThumbnailImage(
                     asset: selectedAssets.elementAt(index),
                   ),
@@ -179,7 +179,7 @@ class CreateAlbumPage extends HookConsumerWidget {
       return const SliverToBoxAdapter();
     }
 
-    _createNonSharedAlbum() async {
+    createNonSharedAlbum() async {
       var newAlbum = await ref.watch(albumProvider.notifier).createAlbum(
             ref.watch(albumTitleProvider),
             ref.watch(assetSelectionProvider).selectedNewAssetsForAlbum,
@@ -216,7 +216,7 @@ class CreateAlbumPage extends HookConsumerWidget {
           if (isSharedAlbum)
             TextButton(
               onPressed: albumTitleController.text.isNotEmpty
-                  ? _showSelectUserPage
+                  ? showSelectUserPage
                   : null,
               child: Text(
                 'create_shared_album_page_share'.tr(),
@@ -230,7 +230,7 @@ class CreateAlbumPage extends HookConsumerWidget {
             TextButton(
               onPressed: albumTitleController.text.isNotEmpty &&
                       selectedAssets.isNotEmpty
-                  ? _createNonSharedAlbum
+                  ? createNonSharedAlbum
                   : null,
               child: Text(
                 'create_shared_album_page_create'.tr(),
@@ -242,7 +242,7 @@ class CreateAlbumPage extends HookConsumerWidget {
         ],
       ),
       body: GestureDetector(
-        onTap: _onBackgroundTapped,
+        onTap: onBackgroundTapped,
         child: CustomScrollView(
           slivers: [
             SliverAppBar(
@@ -255,15 +255,15 @@ class CreateAlbumPage extends HookConsumerWidget {
                 preferredSize: const Size.fromHeight(66.0),
                 child: Column(
                   children: [
-                    _buildTitleInputField(),
-                    if (selectedAssets.isNotEmpty) _buildControlButton(),
+                    buildTitleInputField(),
+                    if (selectedAssets.isNotEmpty) buildControlButton(),
                   ],
                 ),
               ),
             ),
-            _buildTitle(),
-            _buildSelectPhotosButton(),
-            _buildSelectedImageGrid(),
+            buildTitle(),
+            buildSelectPhotosButton(),
+            buildSelectedImageGrid(),
           ],
         ),
       ),

+ 6 - 6
mobile/lib/modules/album/views/select_additional_user_for_sharing_page.dart

@@ -19,12 +19,12 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
         ref.watch(suggestedSharedUsersProvider);
     final sharedUsersList = useState<Set<UserResponseDto>>({});
 
-    _addNewUsersHandler() {
+    addNewUsersHandler() {
       AutoRouter.of(context)
           .pop(sharedUsersList.value.map((e) => e.id).toList());
     }
 
-    _buildTileIcon(UserResponseDto user) {
+    buildTileIcon(UserResponseDto user) {
       if (sharedUsersList.value.contains(user)) {
         return CircleAvatar(
           backgroundColor: Theme.of(context).primaryColor,
@@ -42,7 +42,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
       }
     }
 
-    _buildUserList(List<UserResponseDto> users) {
+    buildUserList(List<UserResponseDto> users) {
       List<Widget> usersChip = [];
 
       for (var user in sharedUsersList.value) {
@@ -84,7 +84,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
             shrinkWrap: true,
             itemBuilder: ((context, index) {
               return ListTile(
-                leading: _buildTileIcon(users[index]),
+                leading: buildTileIcon(users[index]),
                 title: Text(
                   users[index].email,
                   style: const TextStyle(
@@ -131,7 +131,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
         actions: [
           TextButton(
             onPressed:
-                sharedUsersList.value.isEmpty ? null : _addNewUsersHandler,
+                sharedUsersList.value.isEmpty ? null : addNewUsersHandler,
             child: const Text(
               "share_add",
               style: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
@@ -147,7 +147,7 @@ class SelectAdditionalUserForSharingPage extends HookConsumerWidget {
             );
           }
 
-          return _buildUserList(users);
+          return buildUserList(users);
         },
         error: (e, _) => Text("Error loading suggested users $e"),
         loading: () => const Center(

+ 6 - 7
mobile/lib/modules/album/views/select_user_for_sharing_page.dart

@@ -20,7 +20,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
     AsyncValue<List<UserResponseDto>> suggestedShareUsers =
         ref.watch(suggestedSharedUsersProvider);
 
-    _createSharedAlbum() async {
+    createSharedAlbum() async {
       var newAlbum =
           await ref.watch(sharedAlbumProvider.notifier).createSharedAlbum(
                 ref.watch(albumTitleProvider),
@@ -44,7 +44,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
       );
     }
 
-    _buildTileIcon(UserResponseDto user) {
+    buildTileIcon(UserResponseDto user) {
       if (sharedUsersList.value.contains(user)) {
         return CircleAvatar(
           backgroundColor: Theme.of(context).primaryColor,
@@ -62,7 +62,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
       }
     }
 
-    _buildUserList(List<UserResponseDto> users) {
+    buildUserList(List<UserResponseDto> users) {
       List<Widget> usersChip = [];
 
       for (var user in sharedUsersList.value) {
@@ -104,7 +104,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
             shrinkWrap: true,
             itemBuilder: ((context, index) {
               return ListTile(
-                leading: _buildTileIcon(users[index]),
+                leading: buildTileIcon(users[index]),
                 title: Text(
                   users[index].email,
                   style: const TextStyle(
@@ -153,8 +153,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
             style: TextButton.styleFrom(
               foregroundColor: Theme.of(context).primaryColor,
             ),
-            onPressed:
-                sharedUsersList.value.isEmpty ? null : _createSharedAlbum,
+            onPressed: sharedUsersList.value.isEmpty ? null : createSharedAlbum,
             child: const Text(
               "share_create_album",
               style: TextStyle(
@@ -168,7 +167,7 @@ class SelectUserForSharingPage extends HookConsumerWidget {
       ),
       body: suggestedShareUsers.when(
         data: (users) {
-          return _buildUserList(users);
+          return buildUserList(users);
         },
         error: (e, _) => Text("Error loading suggested users $e"),
         loading: () => const Center(

+ 4 - 4
mobile/lib/modules/album/views/sharing_page.dart

@@ -28,7 +28,7 @@ class SharingPage extends HookConsumerWidget {
       [],
     );
 
-    _buildAlbumList() {
+    buildAlbumList() {
       return SliverList(
         delegate: SliverChildBuilderDelegate(
           (BuildContext context, int index) {
@@ -71,7 +71,7 @@ class SharingPage extends HookConsumerWidget {
       );
     }
 
-    _buildEmptyListIndication() {
+    buildEmptyListIndication() {
       return SliverToBoxAdapter(
         child: Padding(
           padding: const EdgeInsets.all(8.0),
@@ -136,8 +136,8 @@ class SharingPage extends HookConsumerWidget {
             ),
           ),
           sharedAlbums.isNotEmpty
-              ? _buildAlbumList()
-              : _buildEmptyListIndication()
+              ? buildAlbumList()
+              : buildEmptyListIndication()
         ],
       ),
     );

+ 3 - 1
mobile/lib/modules/asset_viewer/providers/image_viewer_page_state.provider.dart

@@ -64,5 +64,7 @@ class ImageViewerStateNotifier extends StateNotifier<ImageViewerPageState> {
 final imageViewerStateProvider =
     StateNotifierProvider<ImageViewerStateNotifier, ImageViewerPageState>(
   ((ref) => ImageViewerStateNotifier(
-      ref.watch(imageViewerServiceProvider), ref.watch(shareServiceProvider))),
+        ref.watch(imageViewerServiceProvider),
+        ref.watch(shareServiceProvider),
+      )),
 );

+ 4 - 4
mobile/lib/modules/asset_viewer/ui/exif_bottom_sheet.dart

@@ -15,7 +15,7 @@ class ExifBottomSheet extends ConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    _buildMap() {
+    buildMap() {
       return Padding(
         padding: const EdgeInsets.symmetric(vertical: 16.0),
         child: Container(
@@ -66,7 +66,7 @@ class ExifBottomSheet extends ConsumerWidget {
 
     ExifResponseDto? exifInfo = assetDetail.remote?.exifInfo;
 
-    _buildLocationText() {
+    buildLocationText() {
       return Text(
         "${exifInfo?.city}, ${exifInfo?.state}",
         style: TextStyle(
@@ -120,11 +120,11 @@ class ExifBottomSheet extends ConsumerWidget {
                   ).tr(),
                   if (assetDetail.latitude != null &&
                       assetDetail.longitude != null)
-                    _buildMap(),
+                    buildMap(),
                   if (exifInfo != null &&
                       exifInfo.city != null &&
                       exifInfo.state != null)
-                    _buildLocationText(),
+                    buildLocationText(),
                   Text(
                     "${assetDetail.latitude?.toStringAsFixed(4)}, ${assetDetail.longitude?.toStringAsFixed(4)}",
                     style: TextStyle(fontSize: 12, color: Colors.grey[400]),

+ 2 - 0
mobile/lib/modules/backup/background_service/localization.dart

@@ -1,3 +1,5 @@
+// ignore_for_file: implementation_imports
+
 import 'package:flutter/foundation.dart';
 import 'package:easy_localization/src/asset_loader.dart';
 import 'package:easy_localization/src/easy_localization_controller.dart';

+ 4 - 4
mobile/lib/modules/backup/ui/album_info_card.dart

@@ -33,7 +33,7 @@ class AlbumInfoCard extends HookConsumerWidget {
     ColorFilter unselectedFilter =
         const ColorFilter.mode(Colors.black, BlendMode.color);
 
-    _buildSelectedTextBox() {
+    buildSelectedTextBox() {
       if (isSelected) {
         return Chip(
           visualDensity: VisualDensity.compact,
@@ -67,7 +67,7 @@ class AlbumInfoCard extends HookConsumerWidget {
       return const SizedBox();
     }
 
-    _buildImageFilter() {
+    buildImageFilter() {
       if (isSelected) {
         return selectedFilter;
       } else if (isExcluded) {
@@ -163,7 +163,7 @@ class AlbumInfoCard extends HookConsumerWidget {
                       topRight: Radius.circular(12),
                     ),
                     image: DecorationImage(
-                      colorFilter: _buildImageFilter(),
+                      colorFilter: buildImageFilter(),
                       image: imageData != null
                           ? MemoryImage(imageData!)
                           : const AssetImage(
@@ -177,7 +177,7 @@ class AlbumInfoCard extends HookConsumerWidget {
                 Positioned(
                   bottom: 10,
                   left: 25,
-                  child: _buildSelectedTextBox(),
+                  child: buildSelectedTextBox(),
                 )
               ],
             ),

+ 5 - 3
mobile/lib/modules/backup/views/album_preview_page.dart

@@ -15,14 +15,16 @@ class AlbumPreviewPage extends HookConsumerWidget {
   Widget build(BuildContext context, WidgetRef ref) {
     final assets = useState<List<AssetEntity>>([]);
 
-    _getAssetsInAlbum() async {
+    getAssetsInAlbum() async {
       assets.value = await album.getAssetListRange(
-          start: 0, end: await album.assetCountAsync);
+        start: 0,
+        end: await album.assetCountAsync,
+      );
     }
 
     useEffect(
       () {
-        _getAssetsInAlbum();
+        getAssetsInAlbum();
         return null;
       },
       [],

+ 6 - 6
mobile/lib/modules/backup/views/backup_album_selection_page.dart

@@ -27,7 +27,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
       [],
     );
 
-    _buildAlbumSelectionList() {
+    buildAlbumSelectionList() {
       if (availableAlbums.isEmpty) {
         return const Center(
           child: ImmichLoadingIndicator(),
@@ -56,7 +56,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
       );
     }
 
-    _buildSelectedAlbumNameChip() {
+    buildSelectedAlbumNameChip() {
       return selectedBackupAlbums.map((album) {
         void removeSelection() {
           if (ref.watch(backupProvider).selectedBackupAlbums.length == 1) {
@@ -104,7 +104,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
       }).toSet();
     }
 
-    _buildExcludedAlbumNameChip() {
+    buildExcludedAlbumNameChip() {
       return excludedBackupAlbums.map((album) {
         void removeSelection() {
           ref
@@ -177,8 +177,8 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
             padding: const EdgeInsets.symmetric(horizontal: 16.0),
             child: Wrap(
               children: [
-                ..._buildSelectedAlbumNameChip(),
-                ..._buildExcludedAlbumNameChip()
+                ...buildSelectedAlbumNameChip(),
+                ...buildExcludedAlbumNameChip()
               ],
             ),
           ),
@@ -286,7 +286,7 @@ class BackupAlbumSelectionPage extends HookConsumerWidget {
 
           Padding(
             padding: const EdgeInsets.only(bottom: 16.0),
-            child: _buildAlbumSelectionList(),
+            child: buildAlbumSelectionList(),
           ),
         ],
       ),

+ 22 - 22
mobile/lib/modules/backup/views/backup_controller_page.dart

@@ -45,7 +45,7 @@ class BackupControllerPage extends HookConsumerWidget {
       [],
     );
 
-    Widget _buildStorageInformation() {
+    Widget buildStorageInformation() {
       return ListTile(
         leading: Icon(
           Icons.storage_rounded,
@@ -84,7 +84,7 @@ class BackupControllerPage extends HookConsumerWidget {
       );
     }
 
-    ListTile _buildAutoBackupController() {
+    ListTile buildAutoBackupController() {
       var backUpOption = authenticationState.deviceInfo.isAutoBackup
           ? "backup_controller_page_status_on".tr()
           : "backup_controller_page_status_off".tr();
@@ -143,7 +143,7 @@ class BackupControllerPage extends HookConsumerWidget {
       );
     }
 
-    void _showErrorToUser(String msg) {
+    void showErrorToUser(String msg) {
       final snackBar = SnackBar(
         content: Text(
           msg.tr(),
@@ -153,7 +153,7 @@ class BackupControllerPage extends HookConsumerWidget {
       ScaffoldMessenger.of(context).showSnackBar(snackBar);
     }
 
-    void _showBatteryOptimizationInfoToUser() {
+    void showBatteryOptimizationInfoToUser() {
       showDialog<void>(
         context: context,
         barrierDismissible: false,
@@ -193,7 +193,7 @@ class BackupControllerPage extends HookConsumerWidget {
       );
     }
 
-    ListTile _buildBackgroundBackupController() {
+    ListTile buildBackgroundBackupController() {
       final bool isBackgroundEnabled = backupState.backgroundBackup;
       final bool isWifiRequired = backupState.backupRequireWifi;
       final bool isChargingRequired = backupState.backupRequireCharging;
@@ -238,8 +238,8 @@ class BackupControllerPage extends HookConsumerWidget {
                         .read(backupProvider.notifier)
                         .configureBackgroundBackup(
                           requireWifi: isChecked,
-                          onError: _showErrorToUser,
-                          onBatteryInfo: _showBatteryOptimizationInfoToUser,
+                          onError: showErrorToUser,
+                          onBatteryInfo: showBatteryOptimizationInfoToUser,
                         )
                     : null,
               ),
@@ -259,8 +259,8 @@ class BackupControllerPage extends HookConsumerWidget {
                         .read(backupProvider.notifier)
                         .configureBackgroundBackup(
                           requireCharging: isChecked,
-                          onError: _showErrorToUser,
-                          onBatteryInfo: _showBatteryOptimizationInfoToUser,
+                          onError: showErrorToUser,
+                          onBatteryInfo: showBatteryOptimizationInfoToUser,
                         )
                     : null,
               ),
@@ -268,8 +268,8 @@ class BackupControllerPage extends HookConsumerWidget {
               onPressed: () =>
                   ref.read(backupProvider.notifier).configureBackgroundBackup(
                         enabled: !isBackgroundEnabled,
-                        onError: _showErrorToUser,
-                        onBatteryInfo: _showBatteryOptimizationInfoToUser,
+                        onError: showErrorToUser,
+                        onBatteryInfo: showBatteryOptimizationInfoToUser,
                       ),
               child: Text(
                 isBackgroundEnabled
@@ -284,7 +284,7 @@ class BackupControllerPage extends HookConsumerWidget {
       );
     }
 
-    Widget _buildSelectedAlbumName() {
+    Widget buildSelectedAlbumName() {
       var text = "backup_controller_page_backup_selected".tr();
       var albums = ref.watch(backupProvider).selectedBackupAlbums;
 
@@ -323,7 +323,7 @@ class BackupControllerPage extends HookConsumerWidget {
       }
     }
 
-    Widget _buildExcludedAlbumName() {
+    Widget buildExcludedAlbumName() {
       var text = "backup_controller_page_excluded".tr();
       var albums = ref.watch(backupProvider).excludedBackupAlbums;
 
@@ -348,7 +348,7 @@ class BackupControllerPage extends HookConsumerWidget {
       }
     }
 
-    _buildFolderSelectionTile() {
+    buildFolderSelectionTile() {
       return Card(
         shape: RoundedRectangleBorder(
           borderRadius: BorderRadius.circular(5), // if you need this
@@ -374,8 +374,8 @@ class BackupControllerPage extends HookConsumerWidget {
                   "backup_controller_page_to_backup",
                   style: TextStyle(fontSize: 12),
                 ).tr(),
-                _buildSelectedAlbumName(),
-                _buildExcludedAlbumName()
+                buildSelectedAlbumName(),
+                buildExcludedAlbumName()
               ],
             ),
           ),
@@ -398,7 +398,7 @@ class BackupControllerPage extends HookConsumerWidget {
       );
     }
 
-    _buildCurrentBackupAssetInfoCard() {
+    buildCurrentBackupAssetInfoCard() {
       return ListTile(
         leading: Icon(
           Icons.info_outline_rounded,
@@ -606,7 +606,7 @@ class BackupControllerPage extends HookConsumerWidget {
                       ),
                     ),
                   ),
-            _buildFolderSelectionTile(),
+            buildFolderSelectionTile(),
             BackupInfoCard(
               title: "backup_controller_page_total".tr(),
               subtitle: "backup_controller_page_total_sub".tr(),
@@ -624,13 +624,13 @@ class BackupControllerPage extends HookConsumerWidget {
                   "${backupState.allUniqueAssets.length - backupState.selectedAlbumsBackupAssetsIds.length}",
             ),
             const Divider(),
-            _buildAutoBackupController(),
+            buildAutoBackupController(),
             if (Platform.isAndroid) const Divider(),
-            if (Platform.isAndroid) _buildBackgroundBackupController(),
+            if (Platform.isAndroid) buildBackgroundBackupController(),
             const Divider(),
-            _buildStorageInformation(),
+            buildStorageInformation(),
             const Divider(),
-            _buildCurrentBackupAssetInfoCard(),
+            buildCurrentBackupAssetInfoCard(),
             Padding(
               padding: const EdgeInsets.only(
                 top: 24,

+ 1 - 1
mobile/lib/modules/home/services/asset.service.dart

@@ -11,7 +11,7 @@ import 'package:immich_mobile/shared/models/asset.dart';
 import 'package:immich_mobile/shared/providers/api.provider.dart';
 import 'package:immich_mobile/shared/services/api.service.dart';
 import 'package:openapi/api.dart';
-import 'package:photo_manager/src/types/entity.dart';
+import 'package:photo_manager/photo_manager.dart';
 
 final assetServiceProvider = Provider(
   (ref) => AssetService(

+ 4 - 4
mobile/lib/modules/home/ui/profile_drawer/profile_drawer.dart

@@ -15,7 +15,7 @@ class ProfileDrawer extends HookConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    _buildSignoutButton() {
+    buildSignoutButton() {
       return ListTile(
         horizontalTitleGap: 0,
         leading: SizedBox(
@@ -46,7 +46,7 @@ class ProfileDrawer extends HookConsumerWidget {
       );
     }
 
-    _buildSettingButton() {
+    buildSettingButton() {
       return ListTile(
         horizontalTitleGap: 0,
         leading: SizedBox(
@@ -79,8 +79,8 @@ class ProfileDrawer extends HookConsumerWidget {
             padding: EdgeInsets.zero,
             children: [
               const ProfileDrawerHeader(),
-              _buildSettingButton(),
-              _buildSignoutButton(),
+              buildSettingButton(),
+              buildSignoutButton(),
             ],
           ),
           const ServerInfoBox()

+ 5 - 5
mobile/lib/modules/home/ui/profile_drawer/profile_drawer_header.dart

@@ -25,7 +25,7 @@ class ProfileDrawerHeader extends HookConsumerWidget {
     var dummmy = Random().nextInt(1024);
     final isDarkMode = Theme.of(context).brightness == Brightness.dark;
 
-    _buildUserProfileImage() {
+    buildUserProfileImage() {
       if (authState.profileImagePath.isEmpty) {
         return const CircleAvatar(
           radius: 35,
@@ -77,7 +77,7 @@ class ProfileDrawerHeader extends HookConsumerWidget {
       return const SizedBox();
     }
 
-    _pickUserProfileImage() async {
+    pickUserProfileImage() async {
       final XFile? image = await ImagePicker().pickImage(
         source: ImageSource.gallery,
         maxHeight: 1024,
@@ -98,7 +98,7 @@ class ProfileDrawerHeader extends HookConsumerWidget {
 
     useEffect(
       () {
-        _buildUserProfileImage();
+        buildUserProfileImage();
         return null;
       },
       [],
@@ -129,12 +129,12 @@ class ProfileDrawerHeader extends HookConsumerWidget {
           Stack(
             clipBehavior: Clip.none,
             children: [
-              _buildUserProfileImage(),
+              buildUserProfileImage(),
               Positioned(
                 bottom: 0,
                 right: -5,
                 child: GestureDetector(
-                  onTap: _pickUserProfileImage,
+                  onTap: pickUserProfileImage,
                   child: Material(
                     color: Colors.grey[100],
                     elevation: 3,

+ 2 - 2
mobile/lib/modules/home/ui/profile_drawer/server_info_box.dart

@@ -17,7 +17,7 @@ class ServerInfoBox extends HookConsumerWidget {
 
     final appInfo = useState({});
 
-    _getPackageInfo() async {
+    getPackageInfo() async {
       PackageInfo packageInfo = await PackageInfo.fromPlatform();
 
       appInfo.value = {
@@ -28,7 +28,7 @@ class ServerInfoBox extends HookConsumerWidget {
 
     useEffect(
       () {
-        _getPackageInfo();
+        getPackageInfo();
         return null;
       },
       [],

+ 1 - 1
mobile/lib/modules/login/providers/oauth.provider.dart

@@ -2,5 +2,5 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/login/services/oauth.service.dart';
 import 'package:immich_mobile/shared/providers/api.provider.dart';
 
-final OAuthServiceProvider =
+final oAuthServiceProvider =
     Provider((ref) => OAuthService(ref.watch(apiServiceProvider)));

+ 1 - 1
mobile/lib/modules/login/ui/login_form.dart

@@ -349,7 +349,7 @@ class OAuthLoginButton extends ConsumerWidget {
 
   @override
   Widget build(BuildContext context, WidgetRef ref) {
-    var oAuthService = ref.watch(OAuthServiceProvider);
+    var oAuthService = ref.watch(oAuthServiceProvider);
 
     void performOAuthLogin() async {
       ref.watch(assetProvider.notifier).clearAllAsset();

+ 7 - 7
mobile/lib/modules/search/views/search_page.dart

@@ -39,14 +39,14 @@ class SearchPage extends HookConsumerWidget {
       [],
     );
 
-    _onSearchSubmitted(String searchTerm) async {
+    onSearchSubmitted(String searchTerm) async {
       searchFocusNode.unfocus();
       ref.watch(searchPageStateProvider.notifier).disableSearch();
 
       AutoRouter.of(context).push(SearchResultRoute(searchTerm: searchTerm));
     }
 
-    _buildPlaces() {
+    buildPlaces() {
       return curatedLocation.when(
         loading: () => SizedBox(
           height: imageSize,
@@ -97,7 +97,7 @@ class SearchPage extends HookConsumerWidget {
       );
     }
 
-    _buildThings() {
+    buildThings() {
       return curatedObjects.when(
         loading: () => SizedBox(
           height: imageSize,
@@ -155,7 +155,7 @@ class SearchPage extends HookConsumerWidget {
     return Scaffold(
       appBar: SearchBar(
         searchFocusNode: searchFocusNode,
-        onSubmitted: _onSearchSubmitted,
+        onSubmitted: onSearchSubmitted,
       ),
       body: GestureDetector(
         onTap: () {
@@ -174,7 +174,7 @@ class SearchPage extends HookConsumerWidget {
                     style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
                   ).tr(),
                 ),
-                _buildPlaces(),
+                buildPlaces(),
                 Padding(
                   padding: const EdgeInsets.all(16.0),
                   child: const Text(
@@ -182,11 +182,11 @@ class SearchPage extends HookConsumerWidget {
                     style: TextStyle(fontWeight: FontWeight.bold, fontSize: 14),
                   ).tr(),
                 ),
-                _buildThings()
+                buildThings()
               ],
             ),
             if (isSearchEnabled)
-              SearchSuggestionList(onSubmitted: _onSearchSubmitted),
+              SearchSuggestionList(onSubmitted: onSearchSubmitted),
           ],
         ),
       ),

+ 8 - 8
mobile/lib/modules/search/views/search_result_page.dart

@@ -38,7 +38,7 @@ class SearchResultPage extends HookConsumerWidget {
       [],
     );
 
-    _onSearchSubmitted(String newSearchTerm) {
+    onSearchSubmitted(String newSearchTerm) {
       debugPrint("Re-Search with $newSearchTerm");
       searchFocusNode?.unfocus();
       isNewSearch.value = false;
@@ -46,7 +46,7 @@ class SearchResultPage extends HookConsumerWidget {
       ref.watch(searchResultPageProvider.notifier).search(newSearchTerm);
     }
 
-    _buildTextField() {
+    buildTextField() {
       return TextField(
         controller: searchTermController,
         focusNode: searchFocusNode,
@@ -60,7 +60,7 @@ class SearchResultPage extends HookConsumerWidget {
         onSubmitted: (searchTerm) {
           if (searchTerm.isNotEmpty) {
             searchTermController.clear();
-            _onSearchSubmitted(searchTerm);
+            onSearchSubmitted(searchTerm);
           } else {
             isNewSearch.value = false;
           }
@@ -80,7 +80,7 @@ class SearchResultPage extends HookConsumerWidget {
       );
     }
 
-    _buildChip() {
+    buildChip() {
       return Chip(
         label: Wrap(
           spacing: 5,
@@ -108,7 +108,7 @@ class SearchResultPage extends HookConsumerWidget {
       );
     }
 
-    _buildSearchResult() {
+    buildSearchResult() {
       var searchResultPageState = ref.watch(searchResultPageProvider);
       var searchResultRenderList = ref.watch(searchRenderListProvider);
 
@@ -154,7 +154,7 @@ class SearchResultPage extends HookConsumerWidget {
             isNewSearch.value = true;
             searchFocusNode?.requestFocus();
           },
-          child: isNewSearch.value ? _buildTextField() : _buildChip(),
+          child: isNewSearch.value ? buildTextField() : buildChip(),
         ),
         centerTitle: false,
       ),
@@ -168,9 +168,9 @@ class SearchResultPage extends HookConsumerWidget {
         },
         child: Stack(
           children: [
-            _buildSearchResult(),
+            buildSearchResult(),
             if (isNewSearch.value)
-              SearchSuggestionList(onSubmitted: _onSearchSubmitted),
+              SearchSuggestionList(onSubmitted: onSearchSubmitted),
           ],
         ),
       ),

+ 0 - 1
mobile/lib/modules/settings/views/settings_page.dart

@@ -4,7 +4,6 @@ import 'package:easy_localization/easy_localization.dart';
 import 'package:flutter/material.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/settings/ui/asset_list_settings/asset_list_settings.dart';
-import 'package:immich_mobile/modules/settings/ui/experimental_settings/experimental_settings.dart';
 import 'package:immich_mobile/modules/settings/ui/image_viewer_quality_setting/image_viewer_quality_setting.dart';
 import 'package:immich_mobile/modules/settings/ui/notification_setting/notification_setting.dart';
 import 'package:immich_mobile/modules/settings/ui/theme_setting/theme_setting.dart';

+ 5 - 2
mobile/lib/shared/providers/asset.provider.dart

@@ -39,7 +39,8 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
         stopwatch.start();
         state = await _assetCacheService.get();
         debugPrint(
-            "Reading assets from cache: ${stopwatch.elapsedMilliseconds}ms");
+          "Reading assets from cache: ${stopwatch.elapsedMilliseconds}ms",
+        );
         stopwatch.reset();
       }
 
@@ -145,7 +146,9 @@ class AssetNotifier extends StateNotifier<List<Asset>> {
 
 final assetProvider = StateNotifierProvider<AssetNotifier, List<Asset>>((ref) {
   return AssetNotifier(
-      ref.watch(assetServiceProvider), ref.watch(assetCacheServiceProvider));
+    ref.watch(assetServiceProvider),
+    ref.watch(assetCacheServiceProvider),
+  );
 });
 
 final assetGroupByDateTimeProvider = StateProvider((ref) {

+ 5 - 4
mobile/lib/shared/providers/release_info.provider.dart

@@ -17,10 +17,11 @@ class ReleaseInfoNotifier extends StateNotifier<String> {
     try {
       String? localReleaseVersion = box.get(githubReleaseInfoKey);
       final res = await client.get(
-          Uri.parse(
-            "https://api.github.com/repos/immich-app/immich/releases/latest",
-          ),
-          headers: {"Accept": "application/vnd.github.v3+json"});
+        Uri.parse(
+          "https://api.github.com/repos/immich-app/immich/releases/latest",
+        ),
+        headers: {"Accept": "application/vnd.github.v3+json"},
+      );
 
       if (res.statusCode == 200) {
         final data = jsonDecode(res.body);

+ 1 - 0
mobile/lib/shared/services/cache.service.dart

@@ -1,3 +1,4 @@
+// ignore: depend_on_referenced_packages
 import 'package:flutter_cache_manager/flutter_cache_manager.dart';
 import 'package:hooks_riverpod/hooks_riverpod.dart';
 import 'package:immich_mobile/modules/settings/providers/app_settings.provider.dart';

+ 4 - 4
mobile/lib/shared/ui/immich_toast.dart

@@ -15,7 +15,7 @@ class ImmichToast {
     final fToast = FToast();
     fToast.init(context);
 
-    Color _getColor(ToastType type, BuildContext context) {
+    Color getColor(ToastType type, BuildContext context) {
       switch (type) {
         case ToastType.info:
           return Theme.of(context).primaryColor;
@@ -26,7 +26,7 @@ class ImmichToast {
       }
     }
 
-    Icon _getIcon(ToastType type) {
+    Icon getIcon(ToastType type) {
       switch (type) {
         case ToastType.info:
           return Icon(
@@ -60,7 +60,7 @@ class ImmichToast {
         child: Row(
           mainAxisSize: MainAxisSize.min,
           children: [
-            _getIcon(toastType),
+            getIcon(toastType),
             const SizedBox(
               width: 12.0,
             ),
@@ -68,7 +68,7 @@ class ImmichToast {
               child: Text(
                 msg,
                 style: TextStyle(
-                  color: _getColor(toastType, context),
+                  color: getColor(toastType, context),
                   fontWeight: FontWeight.bold,
                   fontSize: 15,
                 ),

+ 2 - 0
mobile/lib/utils/immich_cache_info_repository.dart

@@ -1,3 +1,5 @@
+// ignore_for_file: depend_on_referenced_packages, implementation_imports
+
 import 'dart:io';
 import 'dart:math';