You've already forked immich
mirror of
https://github.com/immich-app/immich.git
synced 2025-07-14 07:04:24 +02:00
feat(mobile): sqlite asset viewer (#19552)
* add full image provider and refactor thumb providers * photo_view updates * wip: asset-viewer * fix controller dispose on page change * wip: bottom sheet * fix interactions * more bottomsheet changes * generate schema * PR feedback * refactor asset viewer * never rotate and fix background on page change * use photoview as the loading builder * precache after delay * claude: optimizing rebuild of image provider * claude: optimizing image decoding and caching * use proper cache for new full size image providers * chore: load local HEIC fullsize for iOS * make controller callbacks nullable * remove imageprovider cache * do not handle drag gestures when zoomed * use loadOriginal setting for HEIC / larger images * preload assets outside timer * never use same controllers in photo-view gallery * fix: cannot scroll down once swipe with bottom sheet --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com> Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
@ -403,6 +403,58 @@ class ArchiveRoute extends PageRouteInfo<void> {
|
||||
);
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [AssetViewerPage]
|
||||
class AssetViewerRoute extends PageRouteInfo<AssetViewerRouteArgs> {
|
||||
AssetViewerRoute({
|
||||
Key? key,
|
||||
required int initialIndex,
|
||||
required TimelineService timelineService,
|
||||
List<PageRouteInfo>? children,
|
||||
}) : super(
|
||||
AssetViewerRoute.name,
|
||||
args: AssetViewerRouteArgs(
|
||||
key: key,
|
||||
initialIndex: initialIndex,
|
||||
timelineService: timelineService,
|
||||
),
|
||||
initialChildren: children,
|
||||
);
|
||||
|
||||
static const String name = 'AssetViewerRoute';
|
||||
|
||||
static PageInfo page = PageInfo(
|
||||
name,
|
||||
builder: (data) {
|
||||
final args = data.argsAs<AssetViewerRouteArgs>();
|
||||
return AssetViewerPage(
|
||||
key: args.key,
|
||||
initialIndex: args.initialIndex,
|
||||
timelineService: args.timelineService,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
class AssetViewerRouteArgs {
|
||||
const AssetViewerRouteArgs({
|
||||
this.key,
|
||||
required this.initialIndex,
|
||||
required this.timelineService,
|
||||
});
|
||||
|
||||
final Key? key;
|
||||
|
||||
final int initialIndex;
|
||||
|
||||
final TimelineService timelineService;
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return 'AssetViewerRouteArgs{key: $key, initialIndex: $initialIndex, timelineService: $timelineService}';
|
||||
}
|
||||
}
|
||||
|
||||
/// generated route for
|
||||
/// [BackupAlbumSelectionPage]
|
||||
class BackupAlbumSelectionRoute extends PageRouteInfo<void> {
|
||||
|
Reference in New Issue
Block a user