This commit is contained in:
		@@ -13,8 +13,14 @@ import 'package:f0ckapp/providers/media_provider.dart';
 | 
			
		||||
class VideoWidget extends ConsumerStatefulWidget {
 | 
			
		||||
  final MediaItem details;
 | 
			
		||||
  final bool isActive;
 | 
			
		||||
  final bool fullScreen;
 | 
			
		||||
 | 
			
		||||
  const VideoWidget({super.key, required this.details, required this.isActive});
 | 
			
		||||
  const VideoWidget({
 | 
			
		||||
    super.key,
 | 
			
		||||
    required this.details,
 | 
			
		||||
    required this.isActive,
 | 
			
		||||
    this.fullScreen = false,
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  @override
 | 
			
		||||
  ConsumerState<VideoWidget> createState() => _VideoWidgetState();
 | 
			
		||||
@@ -90,17 +96,15 @@ class _VideoWidgetState extends ConsumerState<VideoWidget> {
 | 
			
		||||
 | 
			
		||||
    bool isAudio = widget.details.mime.startsWith('audio');
 | 
			
		||||
 | 
			
		||||
    return Column(
 | 
			
		||||
      mainAxisSize: MainAxisSize.min,
 | 
			
		||||
      children: [
 | 
			
		||||
        AspectRatio(
 | 
			
		||||
          aspectRatio: _controller.value.isInitialized
 | 
			
		||||
              ? _controller.value.aspectRatio
 | 
			
		||||
              : 9 / 16,
 | 
			
		||||
          child: Stack(
 | 
			
		||||
            alignment: Alignment.topCenter,
 | 
			
		||||
            children: [
 | 
			
		||||
              GestureDetector(
 | 
			
		||||
    if (widget.fullScreen) {
 | 
			
		||||
      return Stack(
 | 
			
		||||
        children: [
 | 
			
		||||
          Center(
 | 
			
		||||
            child: AspectRatio(
 | 
			
		||||
              aspectRatio: _controller.value.isInitialized
 | 
			
		||||
                  ? _controller.value.aspectRatio
 | 
			
		||||
                  : 9 / 16,
 | 
			
		||||
              child: GestureDetector(
 | 
			
		||||
                onTap: _onTap,
 | 
			
		||||
                child: isAudio
 | 
			
		||||
                    ? CachedNetworkImage(
 | 
			
		||||
@@ -118,24 +122,71 @@ class _VideoWidgetState extends ConsumerState<VideoWidget> {
 | 
			
		||||
                    ? CachedVideoPlayerPlus(_controller)
 | 
			
		||||
                    : const Center(child: CircularProgressIndicator()),
 | 
			
		||||
              ),
 | 
			
		||||
              if (_controller.value.isInitialized && _showControls) ...[
 | 
			
		||||
                IgnorePointer(
 | 
			
		||||
                  ignoring: true,
 | 
			
		||||
                  child: Container(
 | 
			
		||||
                    color: Colors.black.withValues(alpha: 0.5),
 | 
			
		||||
                    width: double.infinity,
 | 
			
		||||
                    height: double.infinity,
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
          if (_controller.value.isInitialized && _showControls)
 | 
			
		||||
            Positioned.fill(
 | 
			
		||||
              child: GestureDetector(
 | 
			
		||||
                onTap: _onTap,
 | 
			
		||||
                child: Container(
 | 
			
		||||
                  color: Colors.black.withValues(alpha: 0.5),
 | 
			
		||||
                  child: VideoControlsOverlay(
 | 
			
		||||
                    controller: _controller,
 | 
			
		||||
                    button: () => _onTap(ctrlButton: true),
 | 
			
		||||
                  ),
 | 
			
		||||
                ),
 | 
			
		||||
                VideoControlsOverlay(
 | 
			
		||||
                  controller: _controller,
 | 
			
		||||
                  button: () => _onTap(ctrlButton: true),
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
        ],
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      return Column(
 | 
			
		||||
        mainAxisSize: MainAxisSize.min,
 | 
			
		||||
        children: [
 | 
			
		||||
          AspectRatio(
 | 
			
		||||
            aspectRatio: _controller.value.isInitialized
 | 
			
		||||
                ? _controller.value.aspectRatio
 | 
			
		||||
                : 9 / 16,
 | 
			
		||||
            child: Stack(
 | 
			
		||||
              alignment: Alignment.topCenter,
 | 
			
		||||
              children: [
 | 
			
		||||
                GestureDetector(
 | 
			
		||||
                  onTap: _onTap,
 | 
			
		||||
                  child: isAudio
 | 
			
		||||
                      ? CachedNetworkImage(
 | 
			
		||||
                          imageUrl: widget.details.coverUrl,
 | 
			
		||||
                          fit: BoxFit.cover,
 | 
			
		||||
                          placeholder: (context, url) =>
 | 
			
		||||
                              const CircularProgressIndicator(),
 | 
			
		||||
                          errorWidget: (context, url, error) => Image.asset(
 | 
			
		||||
                            'assets/images/music.webp',
 | 
			
		||||
                            fit: BoxFit.contain,
 | 
			
		||||
                            width: double.infinity,
 | 
			
		||||
                          ),
 | 
			
		||||
                        )
 | 
			
		||||
                      : _controller.value.isInitialized
 | 
			
		||||
                      ? CachedVideoPlayerPlus(_controller)
 | 
			
		||||
                      : const Center(child: CircularProgressIndicator()),
 | 
			
		||||
                ),
 | 
			
		||||
                if (_controller.value.isInitialized && _showControls) ...[
 | 
			
		||||
                  IgnorePointer(
 | 
			
		||||
                    ignoring: true,
 | 
			
		||||
                    child: Container(
 | 
			
		||||
                      color: Colors.black.withValues(alpha: 0.5),
 | 
			
		||||
                      width: double.infinity,
 | 
			
		||||
                      height: double.infinity,
 | 
			
		||||
                    ),
 | 
			
		||||
                  ),
 | 
			
		||||
                  VideoControlsOverlay(
 | 
			
		||||
                    controller: _controller,
 | 
			
		||||
                    button: () => _onTap(ctrlButton: true),
 | 
			
		||||
                  ),
 | 
			
		||||
                ],
 | 
			
		||||
              ],
 | 
			
		||||
            ],
 | 
			
		||||
            ),
 | 
			
		||||
          ),
 | 
			
		||||
        ),
 | 
			
		||||
      ],
 | 
			
		||||
    );
 | 
			
		||||
        ],
 | 
			
		||||
      );
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user