splitup the player

This commit is contained in:
Alex
2024-08-09 17:30:30 -05:00
committed by mertalev
parent a8994ffb22
commit a346a37743
6 changed files with 240 additions and 80 deletions
@@ -12,6 +12,7 @@ import 'package:immich_mobile/constants/constants.dart';
import 'package:immich_mobile/entities/asset.entity.dart';
import 'package:immich_mobile/extensions/build_context_extensions.dart';
import 'package:immich_mobile/pages/common/download_panel.dart';
import 'package:immich_mobile/pages/common/native_video_viewer.page.dart';
import 'package:immich_mobile/pages/common/video_viewer.page.dart';
import 'package:immich_mobile/providers/app_settings.provider.dart';
import 'package:immich_mobile/providers/asset_viewer/asset_stack.provider.dart';
@@ -62,7 +63,6 @@ class GalleryViewerPage extends HookConsumerWidget {
final localPosition = useState<Offset?>(null);
final currentIndex = useState(initialIndex);
final currentAsset = loadAsset(currentIndex.value);
// Update is playing motion video
ref.listen(videoPlaybackValueProvider.select((v) => v.state), (_, state) {
isPlayingVideo.value = state == VideoPlaybackState.playing;
@@ -353,6 +353,9 @@ class GalleryViewerPage extends HookConsumerWidget {
),
);
} else {
final useNativePlayer =
asset.isLocal && asset.livePhotoVideoId == null;
return PhotoViewGalleryPageOptions.customChild(
onDragStart: (_, details, __) =>
localPosition.value = details.localPosition,
@@ -367,19 +370,32 @@ class GalleryViewerPage extends HookConsumerWidget {
maxScale: 1.0,
minScale: 1.0,
basePosition: Alignment.center,
child: VideoViewerPage(
key: ValueKey(a),
asset: a,
isMotionVideo: a.livePhotoVideoId != null,
loopVideo: shouldLoopVideo.value,
placeholder: Image(
image: provider,
fit: BoxFit.contain,
height: context.height,
width: context.width,
alignment: Alignment.center,
),
),
child: useNativePlayer
? NativeVideoViewerPage(
key: ValueKey(a),
asset: a,
// loopVideo: shouldLoopVideo.value,
// placeholder: Image(
// image: provider,
// fit: BoxFit.contain,
// height: context.height,
// width: context.width,
// alignment: Alignment.center,
// ),
)
: VideoViewerPage(
key: ValueKey(a),
asset: a,
isMotionVideo: a.livePhotoVideoId != null,
loopVideo: shouldLoopVideo.value,
placeholder: Image(
image: provider,
fit: BoxFit.contain,
height: context.height,
width: context.width,
alignment: Alignment.center,
),
),
);
}
},