|
@@ -373,6 +373,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(
|
|
@@ -466,26 +486,10 @@ class GalleryViewerPage extends HookConsumerWidget {
|
|
|
: null,
|
|
|
builder: (context, index) {
|
|
|
getAssetExif();
|
|
|
+ // Create image provider
|
|
|
+ final ImageProvider provider = imageProvider(assetList[index]);
|
|
|
+
|
|
|
if (assetList[index].isImage && !isPlayingMotionVideo.value) {
|
|
|
- // Show photo
|
|
|
- final ImageProvider provider;
|
|
|
- if (assetList[index].isLocal) {
|
|
|
- provider = localImageProvider(assetList[index]);
|
|
|
- } else {
|
|
|
- if (isLoadOriginal.value) {
|
|
|
- provider = originalImageProvider(assetList[index]);
|
|
|
- } else if (isLoadPreview.value) {
|
|
|
- provider = remoteThumbnailImageProvider(
|
|
|
- assetList[index],
|
|
|
- api.ThumbnailFormat.JPEG,
|
|
|
- );
|
|
|
- } else {
|
|
|
- provider = remoteThumbnailImageProvider(
|
|
|
- assetList[index],
|
|
|
- api.ThumbnailFormat.WEBP,
|
|
|
- );
|
|
|
- }
|
|
|
- }
|
|
|
return PhotoViewGalleryPageOptions(
|
|
|
onDragStart: (_, details, __) =>
|
|
|
localPosition = details.localPosition,
|
|
@@ -518,18 +522,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: assetList[index],
|
|
|
- isMotionVideo: isPlayingMotionVideo.value,
|
|
|
- onVideoEnded: () {
|
|
|
- if (isPlayingMotionVideo.value) {
|
|
|
- isPlayingMotionVideo.value = false;
|
|
|
- }
|
|
|
- },
|
|
|
+ child: VideoViewerPage(
|
|
|
+ onPlaying: () => isPlayingVideo.value = true,
|
|
|
+ onPaused: () => isPlayingVideo.value = false,
|
|
|
+ asset: assetList[index],
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ },
|
|
|
),
|
|
|
);
|
|
|
}
|