|
@@ -367,6 +367,26 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ ImageProvider imageProvider(Asset asset) {
|
|
|
+ if (asset.isLocal) {
|
|
|
+ return localImageProvider(asset);
|
|
|
+ } else {
|
|
|
+ if (isLoadOriginal.value) {
|
|
|
+ return originalImageProvider(asset);
|
|
|
+ } else if (isLoadPreview.value) {
|
|
|
+ return remoteThumbnailImageProvider(
|
|
|
+ asset,
|
|
|
+ api.ThumbnailFormat.JPEG,
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ return remoteThumbnailImageProvider(
|
|
|
+ asset,
|
|
|
+ api.ThumbnailFormat.WEBP,
|
|
|
+ );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
return Scaffold(
|
|
|
backgroundColor: Colors.black,
|
|
|
body: WillPopScope(
|
|
@@ -460,26 +480,9 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|
|
: null,
|
|
|
builder: (context, index) {
|
|
|
final asset = loadAsset(index);
|
|
|
+ final ImageProvider provider = imageProvider(asset);
|
|
|
+
|
|
|
if (asset.isImage && !isPlayingMotionVideo.value) {
|
|
|
- // Show photo
|
|
|
- final ImageProvider provider;
|
|
|
- if (asset.isLocal) {
|
|
|
- provider = localImageProvider(asset);
|
|
|
- } else {
|
|
|
- if (isLoadOriginal.value) {
|
|
|
- provider = originalImageProvider(asset);
|
|
|
- } else if (isLoadPreview.value) {
|
|
|
- provider = remoteThumbnailImageProvider(
|
|
|
- asset,
|
|
|
- api.ThumbnailFormat.JPEG,
|
|
|
- );
|
|
|
- } else {
|
|
|
- provider = remoteThumbnailImageProvider(
|
|
|
- asset,
|
|
|
- api.ThumbnailFormat.WEBP,
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
return PhotoViewGalleryPageOptions(
|
|
|
onDragStart: (_, details, __) =>
|
|
|
localPosition = details.localPosition,
|
|
@@ -512,18 +515,23 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|
|
maxScale: 1.0,
|
|
|
minScale: 1.0,
|
|
|
basePosition: Alignment.bottomCenter,
|
|
|
- child: SafeArea(
|
|
|
- child: VideoViewerPage(
|
|
|
- onPlaying: () => isPlayingVideo.value = true,
|
|
|
- onPaused: () => isPlayingVideo.value = false,
|
|
|
- asset: asset,
|
|
|
- isMotionVideo: isPlayingMotionVideo.value,
|
|
|
- onVideoEnded: () {
|
|
|
- if (isPlayingMotionVideo.value) {
|
|
|
- isPlayingMotionVideo.value = false;
|
|
|
- }
|
|
|
- },
|
|
|
+ child: VideoViewerPage(
|
|
|
+ onPlaying: () => isPlayingVideo.value = true,
|
|
|
+ onPaused: () => isPlayingVideo.value = false,
|
|
|
+ asset: asset,
|
|
|
+ isMotionVideo: isPlayingMotionVideo.value,
|
|
|
+ placeholder: Image(
|
|
|
+ image: provider,
|
|
|
+ fit: BoxFit.fitWidth,
|
|
|
+ height: MediaQuery.of(context).size.height,
|
|
|
+ width: MediaQuery.of(context).size.width,
|
|
|
+ alignment: Alignment.center,
|
|
|
),
|
|
|
+ onVideoEnded: () {
|
|
|
+ if (isPlayingMotionVideo.value) {
|
|
|
+ isPlayingMotionVideo.value = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
),
|
|
|
);
|
|
|
}
|