add local media summary page

This commit is contained in:
shenlong-tanwen 2025-05-09 21:33:24 +05:30
parent 35c3f7211f
commit 1977458c79
5 changed files with 327 additions and 176 deletions

View File

@ -5,25 +5,31 @@ import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/providers/background_sync.provider.dart'; import 'package:immich_mobile/providers/background_sync.provider.dart';
import 'package:immich_mobile/providers/infrastructure/db.provider.dart'; import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
import 'package:immich_mobile/routing/router.dart';
final _features = [ final _features = [
_Feature( _Feature(
name: 'Sync Local', name: 'Sync Local',
icon: Icons.photo_album_rounded, icon: Icons.photo_album_rounded,
onTap: (ref) => ref.read(backgroundSyncProvider).syncLocal(), onTap: (_, ref) => ref.read(backgroundSyncProvider).syncLocal(),
), ),
_Feature( _Feature(
name: 'Sync Remote', name: 'Sync Remote',
icon: Icons.refresh_rounded, icon: Icons.refresh_rounded,
onTap: (ref) => ref.read(backgroundSyncProvider).syncRemote(), onTap: (_, ref) => ref.read(backgroundSyncProvider).syncRemote(),
), ),
_Feature( _Feature(
name: 'WAL Checkpoint', name: 'WAL Checkpoint',
icon: Icons.save_rounded, icon: Icons.save_rounded,
onTap: (ref) => ref onTap: (_, ref) => ref
.read(driftProvider) .read(driftProvider)
.customStatement("pragma wal_checkpoint(truncate)"), .customStatement("pragma wal_checkpoint(truncate)"),
), ),
_Feature(
name: 'Local Media Summary',
icon: Icons.table_chart_rounded,
onTap: (ctx, _) => ctx.pushRoute(const LocalMediaSummaryRoute()),
),
]; ];
@RoutePage() @RoutePage()
@ -44,7 +50,7 @@ class FeatInDevPage extends StatelessWidget {
builder: (ctx, ref, _) => ListTile( builder: (ctx, ref, _) => ListTile(
title: Text(feat.name), title: Text(feat.name),
trailing: Icon(feat.icon), trailing: Icon(feat.icon),
onTap: () => unawaited(feat.onTap(ref)), onTap: () => unawaited(feat.onTap(ctx, ref)),
), ),
); );
}, },
@ -63,5 +69,5 @@ class _Feature {
final String name; final String name;
final IconData icon; final IconData icon;
final Future<void> Function(WidgetRef _) onTap; final Future<void> Function(BuildContext, WidgetRef _) onTap;
} }

View File

@ -0,0 +1,125 @@
import 'package:auto_route/auto_route.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:immich_mobile/domain/models/local_album.model.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/infrastructure/repositories/db.repository.dart';
import 'package:immich_mobile/providers/infrastructure/album.provider.dart';
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
final _stats = [
_Stat(
name: 'Local Assets',
load: (db) => db.managers.localAssetEntity.count(),
),
_Stat(
name: 'Local Albums',
load: (db) => db.managers.localAlbumEntity.count(),
),
];
@RoutePage()
class LocalMediaSummaryPage extends StatelessWidget {
const LocalMediaSummaryPage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Local Media Summary')),
body: Consumer(
builder: (ctx, ref, __) {
final db = ref.watch(driftProvider);
final albumsFuture = ref.watch(localAlbumRepository).getAll();
return CustomScrollView(
slivers: [
SliverList.builder(
itemBuilder: (_, index) {
final stat = _stats[index];
final countFuture = stat.load(db);
return _Summary(name: stat.name, countFuture: countFuture);
},
itemCount: _stats.length,
),
SliverToBoxAdapter(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const Divider(),
Padding(
padding: const EdgeInsets.only(left: 15),
child: Text(
"Album summary",
style: ctx.textTheme.titleMedium,
),
),
],
),
),
FutureBuilder(
future: albumsFuture,
initialData: <LocalAlbum>[],
builder: (_, snap) {
final albums = snap.data!;
if (albums.isEmpty) {
return const SliverToBoxAdapter(child: SizedBox.shrink());
}
albums.sortBy((a) => a.name);
return SliverList.builder(
itemBuilder: (_, index) {
final album = albums[index];
final countFuture = db.managers.localAlbumAssetEntity
.filter((f) => f.albumId.id.equals(album.id))
.count();
return _Summary(
name: album.name,
countFuture: countFuture,
);
},
itemCount: albums.length,
);
},
),
],
);
},
),
);
}
}
// ignore: prefer-single-widget-per-file
class _Summary extends StatelessWidget {
final String name;
final Future<int> countFuture;
const _Summary({required this.name, required this.countFuture});
@override
Widget build(BuildContext context) {
return FutureBuilder<int>(
future: countFuture,
builder: (ctx, snapshot) {
final Widget subtitle;
if (snapshot.connectionState == ConnectionState.waiting) {
subtitle = const CircularProgressIndicator();
} else if (snapshot.hasError) {
subtitle = const Icon(Icons.error_rounded);
} else {
subtitle = Text('${snapshot.data ?? 0}');
}
return ListTile(title: Text(name), trailing: subtitle);
},
);
}
}
class _Stat {
const _Stat({required this.name, required this.load});
final String name;
final Future<int> Function(Drift _) load;
}

View File

@ -62,6 +62,7 @@ import 'package:immich_mobile/pages/search/recently_taken.page.dart';
import 'package:immich_mobile/pages/search/search.page.dart'; import 'package:immich_mobile/pages/search/search.page.dart';
import 'package:immich_mobile/pages/share_intent/share_intent.page.dart'; import 'package:immich_mobile/pages/share_intent/share_intent.page.dart';
import 'package:immich_mobile/presentation/pages/feat_in_development.page.dart'; import 'package:immich_mobile/presentation/pages/feat_in_development.page.dart';
import 'package:immich_mobile/presentation/pages/local_media_stat.page.dart';
import 'package:immich_mobile/providers/api.provider.dart'; import 'package:immich_mobile/providers/api.provider.dart';
import 'package:immich_mobile/providers/gallery_permission.provider.dart'; import 'package:immich_mobile/providers/gallery_permission.provider.dart';
import 'package:immich_mobile/routing/auth_guard.dart'; import 'package:immich_mobile/routing/auth_guard.dart';
@ -294,6 +295,10 @@ class AppRouter extends RootStackRouter {
page: FeatInDevRoute.page, page: FeatInDevRoute.page,
guards: [_authGuard, _duplicateGuard], guards: [_authGuard, _duplicateGuard],
), ),
AutoRoute(
page: LocalMediaSummaryRoute.page,
guards: [_authGuard, _duplicateGuard],
),
]; ];
} }

View File

@ -14,7 +14,7 @@ part of 'router.dart';
/// [ActivitiesPage] /// [ActivitiesPage]
class ActivitiesRoute extends PageRouteInfo<void> { class ActivitiesRoute extends PageRouteInfo<void> {
const ActivitiesRoute({List<PageRouteInfo>? children}) const ActivitiesRoute({List<PageRouteInfo>? children})
: super(ActivitiesRoute.name, initialChildren: children); : super(ActivitiesRoute.name, initialChildren: children);
static const String name = 'ActivitiesRoute'; static const String name = 'ActivitiesRoute';
@ -35,13 +35,13 @@ class AlbumAdditionalSharedUserSelectionRoute
required Album album, required Album album,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AlbumAdditionalSharedUserSelectionRoute.name, AlbumAdditionalSharedUserSelectionRoute.name,
args: AlbumAdditionalSharedUserSelectionRouteArgs( args: AlbumAdditionalSharedUserSelectionRouteArgs(
key: key, key: key,
album: album, album: album,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AlbumAdditionalSharedUserSelectionRoute'; static const String name = 'AlbumAdditionalSharedUserSelectionRoute';
@ -83,14 +83,14 @@ class AlbumAssetSelectionRoute
bool canDeselect = false, bool canDeselect = false,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AlbumAssetSelectionRoute.name, AlbumAssetSelectionRoute.name,
args: AlbumAssetSelectionRouteArgs( args: AlbumAssetSelectionRouteArgs(
key: key, key: key,
existingAssets: existingAssets, existingAssets: existingAssets,
canDeselect: canDeselect, canDeselect: canDeselect,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AlbumAssetSelectionRoute'; static const String name = 'AlbumAssetSelectionRoute';
@ -130,7 +130,7 @@ class AlbumAssetSelectionRouteArgs {
/// [AlbumOptionsPage] /// [AlbumOptionsPage]
class AlbumOptionsRoute extends PageRouteInfo<void> { class AlbumOptionsRoute extends PageRouteInfo<void> {
const AlbumOptionsRoute({List<PageRouteInfo>? children}) const AlbumOptionsRoute({List<PageRouteInfo>? children})
: super(AlbumOptionsRoute.name, initialChildren: children); : super(AlbumOptionsRoute.name, initialChildren: children);
static const String name = 'AlbumOptionsRoute'; static const String name = 'AlbumOptionsRoute';
@ -150,10 +150,10 @@ class AlbumPreviewRoute extends PageRouteInfo<AlbumPreviewRouteArgs> {
required Album album, required Album album,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AlbumPreviewRoute.name, AlbumPreviewRoute.name,
args: AlbumPreviewRouteArgs(key: key, album: album), args: AlbumPreviewRouteArgs(key: key, album: album),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AlbumPreviewRoute'; static const String name = 'AlbumPreviewRoute';
@ -188,10 +188,10 @@ class AlbumSharedUserSelectionRoute
required Set<Asset> assets, required Set<Asset> assets,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AlbumSharedUserSelectionRoute.name, AlbumSharedUserSelectionRoute.name,
args: AlbumSharedUserSelectionRouteArgs(key: key, assets: assets), args: AlbumSharedUserSelectionRouteArgs(key: key, assets: assets),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AlbumSharedUserSelectionRoute'; static const String name = 'AlbumSharedUserSelectionRoute';
@ -225,10 +225,10 @@ class AlbumViewerRoute extends PageRouteInfo<AlbumViewerRouteArgs> {
required int albumId, required int albumId,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AlbumViewerRoute.name, AlbumViewerRoute.name,
args: AlbumViewerRouteArgs(key: key, albumId: albumId), args: AlbumViewerRouteArgs(key: key, albumId: albumId),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AlbumViewerRoute'; static const String name = 'AlbumViewerRoute';
@ -258,7 +258,7 @@ class AlbumViewerRouteArgs {
/// [AlbumsPage] /// [AlbumsPage]
class AlbumsRoute extends PageRouteInfo<void> { class AlbumsRoute extends PageRouteInfo<void> {
const AlbumsRoute({List<PageRouteInfo>? children}) const AlbumsRoute({List<PageRouteInfo>? children})
: super(AlbumsRoute.name, initialChildren: children); : super(AlbumsRoute.name, initialChildren: children);
static const String name = 'AlbumsRoute'; static const String name = 'AlbumsRoute';
@ -274,7 +274,7 @@ class AlbumsRoute extends PageRouteInfo<void> {
/// [AllMotionPhotosPage] /// [AllMotionPhotosPage]
class AllMotionPhotosRoute extends PageRouteInfo<void> { class AllMotionPhotosRoute extends PageRouteInfo<void> {
const AllMotionPhotosRoute({List<PageRouteInfo>? children}) const AllMotionPhotosRoute({List<PageRouteInfo>? children})
: super(AllMotionPhotosRoute.name, initialChildren: children); : super(AllMotionPhotosRoute.name, initialChildren: children);
static const String name = 'AllMotionPhotosRoute'; static const String name = 'AllMotionPhotosRoute';
@ -290,7 +290,7 @@ class AllMotionPhotosRoute extends PageRouteInfo<void> {
/// [AllPeoplePage] /// [AllPeoplePage]
class AllPeopleRoute extends PageRouteInfo<void> { class AllPeopleRoute extends PageRouteInfo<void> {
const AllPeopleRoute({List<PageRouteInfo>? children}) const AllPeopleRoute({List<PageRouteInfo>? children})
: super(AllPeopleRoute.name, initialChildren: children); : super(AllPeopleRoute.name, initialChildren: children);
static const String name = 'AllPeopleRoute'; static const String name = 'AllPeopleRoute';
@ -306,7 +306,7 @@ class AllPeopleRoute extends PageRouteInfo<void> {
/// [AllPlacesPage] /// [AllPlacesPage]
class AllPlacesRoute extends PageRouteInfo<void> { class AllPlacesRoute extends PageRouteInfo<void> {
const AllPlacesRoute({List<PageRouteInfo>? children}) const AllPlacesRoute({List<PageRouteInfo>? children})
: super(AllPlacesRoute.name, initialChildren: children); : super(AllPlacesRoute.name, initialChildren: children);
static const String name = 'AllPlacesRoute'; static const String name = 'AllPlacesRoute';
@ -322,7 +322,7 @@ class AllPlacesRoute extends PageRouteInfo<void> {
/// [AllVideosPage] /// [AllVideosPage]
class AllVideosRoute extends PageRouteInfo<void> { class AllVideosRoute extends PageRouteInfo<void> {
const AllVideosRoute({List<PageRouteInfo>? children}) const AllVideosRoute({List<PageRouteInfo>? children})
: super(AllVideosRoute.name, initialChildren: children); : super(AllVideosRoute.name, initialChildren: children);
static const String name = 'AllVideosRoute'; static const String name = 'AllVideosRoute';
@ -342,10 +342,10 @@ class AppLogDetailRoute extends PageRouteInfo<AppLogDetailRouteArgs> {
required LogMessage logMessage, required LogMessage logMessage,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
AppLogDetailRoute.name, AppLogDetailRoute.name,
args: AppLogDetailRouteArgs(key: key, logMessage: logMessage), args: AppLogDetailRouteArgs(key: key, logMessage: logMessage),
initialChildren: children, initialChildren: children,
); );
static const String name = 'AppLogDetailRoute'; static const String name = 'AppLogDetailRoute';
@ -375,7 +375,7 @@ class AppLogDetailRouteArgs {
/// [AppLogPage] /// [AppLogPage]
class AppLogRoute extends PageRouteInfo<void> { class AppLogRoute extends PageRouteInfo<void> {
const AppLogRoute({List<PageRouteInfo>? children}) const AppLogRoute({List<PageRouteInfo>? children})
: super(AppLogRoute.name, initialChildren: children); : super(AppLogRoute.name, initialChildren: children);
static const String name = 'AppLogRoute'; static const String name = 'AppLogRoute';
@ -391,7 +391,7 @@ class AppLogRoute extends PageRouteInfo<void> {
/// [ArchivePage] /// [ArchivePage]
class ArchiveRoute extends PageRouteInfo<void> { class ArchiveRoute extends PageRouteInfo<void> {
const ArchiveRoute({List<PageRouteInfo>? children}) const ArchiveRoute({List<PageRouteInfo>? children})
: super(ArchiveRoute.name, initialChildren: children); : super(ArchiveRoute.name, initialChildren: children);
static const String name = 'ArchiveRoute'; static const String name = 'ArchiveRoute';
@ -407,7 +407,7 @@ class ArchiveRoute extends PageRouteInfo<void> {
/// [BackupAlbumSelectionPage] /// [BackupAlbumSelectionPage]
class BackupAlbumSelectionRoute extends PageRouteInfo<void> { class BackupAlbumSelectionRoute extends PageRouteInfo<void> {
const BackupAlbumSelectionRoute({List<PageRouteInfo>? children}) const BackupAlbumSelectionRoute({List<PageRouteInfo>? children})
: super(BackupAlbumSelectionRoute.name, initialChildren: children); : super(BackupAlbumSelectionRoute.name, initialChildren: children);
static const String name = 'BackupAlbumSelectionRoute'; static const String name = 'BackupAlbumSelectionRoute';
@ -423,7 +423,7 @@ class BackupAlbumSelectionRoute extends PageRouteInfo<void> {
/// [BackupControllerPage] /// [BackupControllerPage]
class BackupControllerRoute extends PageRouteInfo<void> { class BackupControllerRoute extends PageRouteInfo<void> {
const BackupControllerRoute({List<PageRouteInfo>? children}) const BackupControllerRoute({List<PageRouteInfo>? children})
: super(BackupControllerRoute.name, initialChildren: children); : super(BackupControllerRoute.name, initialChildren: children);
static const String name = 'BackupControllerRoute'; static const String name = 'BackupControllerRoute';
@ -439,7 +439,7 @@ class BackupControllerRoute extends PageRouteInfo<void> {
/// [BackupOptionsPage] /// [BackupOptionsPage]
class BackupOptionsRoute extends PageRouteInfo<void> { class BackupOptionsRoute extends PageRouteInfo<void> {
const BackupOptionsRoute({List<PageRouteInfo>? children}) const BackupOptionsRoute({List<PageRouteInfo>? children})
: super(BackupOptionsRoute.name, initialChildren: children); : super(BackupOptionsRoute.name, initialChildren: children);
static const String name = 'BackupOptionsRoute'; static const String name = 'BackupOptionsRoute';
@ -455,7 +455,7 @@ class BackupOptionsRoute extends PageRouteInfo<void> {
/// [ChangePasswordPage] /// [ChangePasswordPage]
class ChangePasswordRoute extends PageRouteInfo<void> { class ChangePasswordRoute extends PageRouteInfo<void> {
const ChangePasswordRoute({List<PageRouteInfo>? children}) const ChangePasswordRoute({List<PageRouteInfo>? children})
: super(ChangePasswordRoute.name, initialChildren: children); : super(ChangePasswordRoute.name, initialChildren: children);
static const String name = 'ChangePasswordRoute'; static const String name = 'ChangePasswordRoute';
@ -475,10 +475,10 @@ class CreateAlbumRoute extends PageRouteInfo<CreateAlbumRouteArgs> {
List<Asset>? assets, List<Asset>? assets,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
CreateAlbumRoute.name, CreateAlbumRoute.name,
args: CreateAlbumRouteArgs(key: key, assets: assets), args: CreateAlbumRouteArgs(key: key, assets: assets),
initialChildren: children, initialChildren: children,
); );
static const String name = 'CreateAlbumRoute'; static const String name = 'CreateAlbumRoute';
@ -515,10 +515,10 @@ class CropImageRoute extends PageRouteInfo<CropImageRouteArgs> {
required Asset asset, required Asset asset,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
CropImageRoute.name, CropImageRoute.name,
args: CropImageRouteArgs(key: key, image: image, asset: asset), args: CropImageRouteArgs(key: key, image: image, asset: asset),
initialChildren: children, initialChildren: children,
); );
static const String name = 'CropImageRoute'; static const String name = 'CropImageRoute';
@ -560,15 +560,15 @@ class EditImageRoute extends PageRouteInfo<EditImageRouteArgs> {
required bool isEdited, required bool isEdited,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
EditImageRoute.name, EditImageRoute.name,
args: EditImageRouteArgs( args: EditImageRouteArgs(
key: key, key: key,
asset: asset, asset: asset,
image: image, image: image,
isEdited: isEdited, isEdited: isEdited,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'EditImageRoute'; static const String name = 'EditImageRoute';
@ -612,7 +612,7 @@ class EditImageRouteArgs {
/// [FailedBackupStatusPage] /// [FailedBackupStatusPage]
class FailedBackupStatusRoute extends PageRouteInfo<void> { class FailedBackupStatusRoute extends PageRouteInfo<void> {
const FailedBackupStatusRoute({List<PageRouteInfo>? children}) const FailedBackupStatusRoute({List<PageRouteInfo>? children})
: super(FailedBackupStatusRoute.name, initialChildren: children); : super(FailedBackupStatusRoute.name, initialChildren: children);
static const String name = 'FailedBackupStatusRoute'; static const String name = 'FailedBackupStatusRoute';
@ -628,7 +628,7 @@ class FailedBackupStatusRoute extends PageRouteInfo<void> {
/// [FavoritesPage] /// [FavoritesPage]
class FavoritesRoute extends PageRouteInfo<void> { class FavoritesRoute extends PageRouteInfo<void> {
const FavoritesRoute({List<PageRouteInfo>? children}) const FavoritesRoute({List<PageRouteInfo>? children})
: super(FavoritesRoute.name, initialChildren: children); : super(FavoritesRoute.name, initialChildren: children);
static const String name = 'FavoritesRoute'; static const String name = 'FavoritesRoute';
@ -644,7 +644,7 @@ class FavoritesRoute extends PageRouteInfo<void> {
/// [FeatInDevPage] /// [FeatInDevPage]
class FeatInDevRoute extends PageRouteInfo<void> { class FeatInDevRoute extends PageRouteInfo<void> {
const FeatInDevRoute({List<PageRouteInfo>? children}) const FeatInDevRoute({List<PageRouteInfo>? children})
: super(FeatInDevRoute.name, initialChildren: children); : super(FeatInDevRoute.name, initialChildren: children);
static const String name = 'FeatInDevRoute'; static const String name = 'FeatInDevRoute';
@ -665,10 +665,10 @@ class FilterImageRoute extends PageRouteInfo<FilterImageRouteArgs> {
required Asset asset, required Asset asset,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
FilterImageRoute.name, FilterImageRoute.name,
args: FilterImageRouteArgs(key: key, image: image, asset: asset), args: FilterImageRouteArgs(key: key, image: image, asset: asset),
initialChildren: children, initialChildren: children,
); );
static const String name = 'FilterImageRoute'; static const String name = 'FilterImageRoute';
@ -712,10 +712,10 @@ class FolderRoute extends PageRouteInfo<FolderRouteArgs> {
RecursiveFolder? folder, RecursiveFolder? folder,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
FolderRoute.name, FolderRoute.name,
args: FolderRouteArgs(key: key, folder: folder), args: FolderRouteArgs(key: key, folder: folder),
initialChildren: children, initialChildren: children,
); );
static const String name = 'FolderRoute'; static const String name = 'FolderRoute';
@ -754,16 +754,16 @@ class GalleryViewerRoute extends PageRouteInfo<GalleryViewerRouteArgs> {
bool showStack = false, bool showStack = false,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
GalleryViewerRoute.name, GalleryViewerRoute.name,
args: GalleryViewerRouteArgs( args: GalleryViewerRouteArgs(
key: key, key: key,
renderList: renderList, renderList: renderList,
initialIndex: initialIndex, initialIndex: initialIndex,
heroOffset: heroOffset, heroOffset: heroOffset,
showStack: showStack, showStack: showStack,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'GalleryViewerRoute'; static const String name = 'GalleryViewerRoute';
@ -811,7 +811,7 @@ class GalleryViewerRouteArgs {
/// [HeaderSettingsPage] /// [HeaderSettingsPage]
class HeaderSettingsRoute extends PageRouteInfo<void> { class HeaderSettingsRoute extends PageRouteInfo<void> {
const HeaderSettingsRoute({List<PageRouteInfo>? children}) const HeaderSettingsRoute({List<PageRouteInfo>? children})
: super(HeaderSettingsRoute.name, initialChildren: children); : super(HeaderSettingsRoute.name, initialChildren: children);
static const String name = 'HeaderSettingsRoute'; static const String name = 'HeaderSettingsRoute';
@ -827,7 +827,7 @@ class HeaderSettingsRoute extends PageRouteInfo<void> {
/// [LibraryPage] /// [LibraryPage]
class LibraryRoute extends PageRouteInfo<void> { class LibraryRoute extends PageRouteInfo<void> {
const LibraryRoute({List<PageRouteInfo>? children}) const LibraryRoute({List<PageRouteInfo>? children})
: super(LibraryRoute.name, initialChildren: children); : super(LibraryRoute.name, initialChildren: children);
static const String name = 'LibraryRoute'; static const String name = 'LibraryRoute';
@ -843,7 +843,7 @@ class LibraryRoute extends PageRouteInfo<void> {
/// [LocalAlbumsPage] /// [LocalAlbumsPage]
class LocalAlbumsRoute extends PageRouteInfo<void> { class LocalAlbumsRoute extends PageRouteInfo<void> {
const LocalAlbumsRoute({List<PageRouteInfo>? children}) const LocalAlbumsRoute({List<PageRouteInfo>? children})
: super(LocalAlbumsRoute.name, initialChildren: children); : super(LocalAlbumsRoute.name, initialChildren: children);
static const String name = 'LocalAlbumsRoute'; static const String name = 'LocalAlbumsRoute';
@ -855,11 +855,27 @@ class LocalAlbumsRoute extends PageRouteInfo<void> {
); );
} }
/// generated route for
/// [LocalMediaSummaryPage]
class LocalMediaSummaryRoute extends PageRouteInfo<void> {
const LocalMediaSummaryRoute({List<PageRouteInfo>? children})
: super(LocalMediaSummaryRoute.name, initialChildren: children);
static const String name = 'LocalMediaSummaryRoute';
static PageInfo page = PageInfo(
name,
builder: (data) {
return const LocalMediaSummaryPage();
},
);
}
/// generated route for /// generated route for
/// [LoginPage] /// [LoginPage]
class LoginRoute extends PageRouteInfo<void> { class LoginRoute extends PageRouteInfo<void> {
const LoginRoute({List<PageRouteInfo>? children}) const LoginRoute({List<PageRouteInfo>? children})
: super(LoginRoute.name, initialChildren: children); : super(LoginRoute.name, initialChildren: children);
static const String name = 'LoginRoute'; static const String name = 'LoginRoute';
@ -879,13 +895,13 @@ class MapLocationPickerRoute extends PageRouteInfo<MapLocationPickerRouteArgs> {
LatLng initialLatLng = const LatLng(0, 0), LatLng initialLatLng = const LatLng(0, 0),
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
MapLocationPickerRoute.name, MapLocationPickerRoute.name,
args: MapLocationPickerRouteArgs( args: MapLocationPickerRouteArgs(
key: key, key: key,
initialLatLng: initialLatLng, initialLatLng: initialLatLng,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'MapLocationPickerRoute'; static const String name = 'MapLocationPickerRoute';
@ -923,11 +939,11 @@ class MapLocationPickerRouteArgs {
/// [MapPage] /// [MapPage]
class MapRoute extends PageRouteInfo<MapRouteArgs> { class MapRoute extends PageRouteInfo<MapRouteArgs> {
MapRoute({Key? key, LatLng? initialLocation, List<PageRouteInfo>? children}) MapRoute({Key? key, LatLng? initialLocation, List<PageRouteInfo>? children})
: super( : super(
MapRoute.name, MapRoute.name,
args: MapRouteArgs(key: key, initialLocation: initialLocation), args: MapRouteArgs(key: key, initialLocation: initialLocation),
initialChildren: children, initialChildren: children,
); );
static const String name = 'MapRoute'; static const String name = 'MapRoute';
@ -964,14 +980,14 @@ class MemoryRoute extends PageRouteInfo<MemoryRouteArgs> {
Key? key, Key? key,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
MemoryRoute.name, MemoryRoute.name,
args: MemoryRouteArgs( args: MemoryRouteArgs(
memories: memories, memories: memories,
memoryIndex: memoryIndex, memoryIndex: memoryIndex,
key: key, key: key,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'MemoryRoute'; static const String name = 'MemoryRoute';
@ -1018,16 +1034,16 @@ class NativeVideoViewerRoute extends PageRouteInfo<NativeVideoViewerRouteArgs> {
int playbackDelayFactor = 1, int playbackDelayFactor = 1,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
NativeVideoViewerRoute.name, NativeVideoViewerRoute.name,
args: NativeVideoViewerRouteArgs( args: NativeVideoViewerRouteArgs(
key: key, key: key,
asset: asset, asset: asset,
image: image, image: image,
showControls: showControls, showControls: showControls,
playbackDelayFactor: playbackDelayFactor, playbackDelayFactor: playbackDelayFactor,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'NativeVideoViewerRoute'; static const String name = 'NativeVideoViewerRoute';
@ -1079,10 +1095,10 @@ class PartnerDetailRoute extends PageRouteInfo<PartnerDetailRouteArgs> {
required UserDto partner, required UserDto partner,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
PartnerDetailRoute.name, PartnerDetailRoute.name,
args: PartnerDetailRouteArgs(key: key, partner: partner), args: PartnerDetailRouteArgs(key: key, partner: partner),
initialChildren: children, initialChildren: children,
); );
static const String name = 'PartnerDetailRoute'; static const String name = 'PartnerDetailRoute';
@ -1112,7 +1128,7 @@ class PartnerDetailRouteArgs {
/// [PartnerPage] /// [PartnerPage]
class PartnerRoute extends PageRouteInfo<void> { class PartnerRoute extends PageRouteInfo<void> {
const PartnerRoute({List<PageRouteInfo>? children}) const PartnerRoute({List<PageRouteInfo>? children})
: super(PartnerRoute.name, initialChildren: children); : super(PartnerRoute.name, initialChildren: children);
static const String name = 'PartnerRoute'; static const String name = 'PartnerRoute';
@ -1128,7 +1144,7 @@ class PartnerRoute extends PageRouteInfo<void> {
/// [PeopleCollectionPage] /// [PeopleCollectionPage]
class PeopleCollectionRoute extends PageRouteInfo<void> { class PeopleCollectionRoute extends PageRouteInfo<void> {
const PeopleCollectionRoute({List<PageRouteInfo>? children}) const PeopleCollectionRoute({List<PageRouteInfo>? children})
: super(PeopleCollectionRoute.name, initialChildren: children); : super(PeopleCollectionRoute.name, initialChildren: children);
static const String name = 'PeopleCollectionRoute'; static const String name = 'PeopleCollectionRoute';
@ -1144,7 +1160,7 @@ class PeopleCollectionRoute extends PageRouteInfo<void> {
/// [PermissionOnboardingPage] /// [PermissionOnboardingPage]
class PermissionOnboardingRoute extends PageRouteInfo<void> { class PermissionOnboardingRoute extends PageRouteInfo<void> {
const PermissionOnboardingRoute({List<PageRouteInfo>? children}) const PermissionOnboardingRoute({List<PageRouteInfo>? children})
: super(PermissionOnboardingRoute.name, initialChildren: children); : super(PermissionOnboardingRoute.name, initialChildren: children);
static const String name = 'PermissionOnboardingRoute'; static const String name = 'PermissionOnboardingRoute';
@ -1165,14 +1181,14 @@ class PersonResultRoute extends PageRouteInfo<PersonResultRouteArgs> {
required String personName, required String personName,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
PersonResultRoute.name, PersonResultRoute.name,
args: PersonResultRouteArgs( args: PersonResultRouteArgs(
key: key, key: key,
personId: personId, personId: personId,
personName: personName, personName: personName,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'PersonResultRoute'; static const String name = 'PersonResultRoute';
@ -1212,7 +1228,7 @@ class PersonResultRouteArgs {
/// [PhotosPage] /// [PhotosPage]
class PhotosRoute extends PageRouteInfo<void> { class PhotosRoute extends PageRouteInfo<void> {
const PhotosRoute({List<PageRouteInfo>? children}) const PhotosRoute({List<PageRouteInfo>? children})
: super(PhotosRoute.name, initialChildren: children); : super(PhotosRoute.name, initialChildren: children);
static const String name = 'PhotosRoute'; static const String name = 'PhotosRoute';
@ -1232,13 +1248,13 @@ class PlacesCollectionRoute extends PageRouteInfo<PlacesCollectionRouteArgs> {
LatLng? currentLocation, LatLng? currentLocation,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
PlacesCollectionRoute.name, PlacesCollectionRoute.name,
args: PlacesCollectionRouteArgs( args: PlacesCollectionRouteArgs(
key: key, key: key,
currentLocation: currentLocation, currentLocation: currentLocation,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'PlacesCollectionRoute'; static const String name = 'PlacesCollectionRoute';
@ -1273,7 +1289,7 @@ class PlacesCollectionRouteArgs {
/// [RecentlyTakenPage] /// [RecentlyTakenPage]
class RecentlyTakenRoute extends PageRouteInfo<void> { class RecentlyTakenRoute extends PageRouteInfo<void> {
const RecentlyTakenRoute({List<PageRouteInfo>? children}) const RecentlyTakenRoute({List<PageRouteInfo>? children})
: super(RecentlyTakenRoute.name, initialChildren: children); : super(RecentlyTakenRoute.name, initialChildren: children);
static const String name = 'RecentlyTakenRoute'; static const String name = 'RecentlyTakenRoute';
@ -1293,10 +1309,10 @@ class SearchRoute extends PageRouteInfo<SearchRouteArgs> {
SearchFilter? prefilter, SearchFilter? prefilter,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
SearchRoute.name, SearchRoute.name,
args: SearchRouteArgs(key: key, prefilter: prefilter), args: SearchRouteArgs(key: key, prefilter: prefilter),
initialChildren: children, initialChildren: children,
); );
static const String name = 'SearchRoute'; static const String name = 'SearchRoute';
@ -1328,7 +1344,7 @@ class SearchRouteArgs {
/// [SettingsPage] /// [SettingsPage]
class SettingsRoute extends PageRouteInfo<void> { class SettingsRoute extends PageRouteInfo<void> {
const SettingsRoute({List<PageRouteInfo>? children}) const SettingsRoute({List<PageRouteInfo>? children})
: super(SettingsRoute.name, initialChildren: children); : super(SettingsRoute.name, initialChildren: children);
static const String name = 'SettingsRoute'; static const String name = 'SettingsRoute';
@ -1348,10 +1364,10 @@ class SettingsSubRoute extends PageRouteInfo<SettingsSubRouteArgs> {
Key? key, Key? key,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
SettingsSubRoute.name, SettingsSubRoute.name,
args: SettingsSubRouteArgs(section: section, key: key), args: SettingsSubRouteArgs(section: section, key: key),
initialChildren: children, initialChildren: children,
); );
static const String name = 'SettingsSubRoute'; static const String name = 'SettingsSubRoute';
@ -1385,10 +1401,10 @@ class ShareIntentRoute extends PageRouteInfo<ShareIntentRouteArgs> {
required List<ShareIntentAttachment> attachments, required List<ShareIntentAttachment> attachments,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
ShareIntentRoute.name, ShareIntentRoute.name,
args: ShareIntentRouteArgs(key: key, attachments: attachments), args: ShareIntentRouteArgs(key: key, attachments: attachments),
initialChildren: children, initialChildren: children,
); );
static const String name = 'ShareIntentRoute'; static const String name = 'ShareIntentRoute';
@ -1424,15 +1440,15 @@ class SharedLinkEditRoute extends PageRouteInfo<SharedLinkEditRouteArgs> {
String? albumId, String? albumId,
List<PageRouteInfo>? children, List<PageRouteInfo>? children,
}) : super( }) : super(
SharedLinkEditRoute.name, SharedLinkEditRoute.name,
args: SharedLinkEditRouteArgs( args: SharedLinkEditRouteArgs(
key: key, key: key,
existingLink: existingLink, existingLink: existingLink,
assetsList: assetsList, assetsList: assetsList,
albumId: albumId, albumId: albumId,
), ),
initialChildren: children, initialChildren: children,
); );
static const String name = 'SharedLinkEditRoute'; static const String name = 'SharedLinkEditRoute';
@ -1478,7 +1494,7 @@ class SharedLinkEditRouteArgs {
/// [SharedLinkPage] /// [SharedLinkPage]
class SharedLinkRoute extends PageRouteInfo<void> { class SharedLinkRoute extends PageRouteInfo<void> {
const SharedLinkRoute({List<PageRouteInfo>? children}) const SharedLinkRoute({List<PageRouteInfo>? children})
: super(SharedLinkRoute.name, initialChildren: children); : super(SharedLinkRoute.name, initialChildren: children);
static const String name = 'SharedLinkRoute'; static const String name = 'SharedLinkRoute';
@ -1494,7 +1510,7 @@ class SharedLinkRoute extends PageRouteInfo<void> {
/// [SplashScreenPage] /// [SplashScreenPage]
class SplashScreenRoute extends PageRouteInfo<void> { class SplashScreenRoute extends PageRouteInfo<void> {
const SplashScreenRoute({List<PageRouteInfo>? children}) const SplashScreenRoute({List<PageRouteInfo>? children})
: super(SplashScreenRoute.name, initialChildren: children); : super(SplashScreenRoute.name, initialChildren: children);
static const String name = 'SplashScreenRoute'; static const String name = 'SplashScreenRoute';
@ -1510,7 +1526,7 @@ class SplashScreenRoute extends PageRouteInfo<void> {
/// [TabControllerPage] /// [TabControllerPage]
class TabControllerRoute extends PageRouteInfo<void> { class TabControllerRoute extends PageRouteInfo<void> {
const TabControllerRoute({List<PageRouteInfo>? children}) const TabControllerRoute({List<PageRouteInfo>? children})
: super(TabControllerRoute.name, initialChildren: children); : super(TabControllerRoute.name, initialChildren: children);
static const String name = 'TabControllerRoute'; static const String name = 'TabControllerRoute';
@ -1526,7 +1542,7 @@ class TabControllerRoute extends PageRouteInfo<void> {
/// [TrashPage] /// [TrashPage]
class TrashRoute extends PageRouteInfo<void> { class TrashRoute extends PageRouteInfo<void> {
const TrashRoute({List<PageRouteInfo>? children}) const TrashRoute({List<PageRouteInfo>? children})
: super(TrashRoute.name, initialChildren: children); : super(TrashRoute.name, initialChildren: children);
static const String name = 'TrashRoute'; static const String name = 'TrashRoute';

View File

@ -180,11 +180,10 @@ class ImmichAppBar extends ConsumerWidget implements PreferredSizeWidget {
), ),
), ),
if (kDebugMode) if (kDebugMode)
if (kDebugMode) IconButton(
IconButton( icon: const Icon(Icons.science_rounded),
icon: const Icon(Icons.science_rounded), onPressed: () => context.pushRoute(const FeatInDevRoute()),
onPressed: () => context.pushRoute(const FeatInDevRoute()), ),
),
if (showUploadButton) if (showUploadButton)
Padding( Padding(
padding: const EdgeInsets.only(right: 20), padding: const EdgeInsets.only(right: 20),