..
This commit is contained in:
		@@ -282,17 +282,24 @@ class _MediaDetailScreenState extends State<MediaDetailScreen> {
 | 
			
		||||
 | 
			
		||||
  Widget _buildMedia(MediaItem item, bool isActive) {
 | 
			
		||||
    Widget mediaWidget;
 | 
			
		||||
    final bool isFavorite =
 | 
			
		||||
        item.favorites?.any((f) => f.userId == authController.user.value?.id) ??
 | 
			
		||||
            false;
 | 
			
		||||
 | 
			
		||||
    if (item.mime.startsWith('image/')) {
 | 
			
		||||
      mediaWidget = CachedNetworkImage(
 | 
			
		||||
        imageUrl: item.mediaUrl,
 | 
			
		||||
        fit: BoxFit.contain,
 | 
			
		||||
        placeholder: (context, url) =>
 | 
			
		||||
            const Center(child: CircularProgressIndicator()),
 | 
			
		||||
        errorWidget: (c, e, s) => const Icon(Icons.broken_image, size: 100),
 | 
			
		||||
      mediaWidget = GestureDetector(
 | 
			
		||||
        onDoubleTap: () => _handleFavoriteToggle(item, isFavorite),
 | 
			
		||||
        child: CachedNetworkImage(
 | 
			
		||||
          imageUrl: item.mediaUrl,
 | 
			
		||||
          fit: BoxFit.contain,
 | 
			
		||||
          placeholder: (context, url) =>
 | 
			
		||||
              const Center(child: CircularProgressIndicator()),
 | 
			
		||||
          errorWidget: (c, e, s) => const Icon(Icons.broken_image, size: 100),
 | 
			
		||||
        ),
 | 
			
		||||
      );
 | 
			
		||||
    } else if (item.mime.startsWith('video/') ||
 | 
			
		||||
        item.mime.startsWith('audio/')) {
 | 
			
		||||
      final key = _videoWidgetKeys.putIfAbsent(
 | 
			
		||||
      final GlobalKey<VideoWidgetState> key = _videoWidgetKeys.putIfAbsent(
 | 
			
		||||
        item.id,
 | 
			
		||||
        () => GlobalKey<VideoWidgetState>(),
 | 
			
		||||
      );
 | 
			
		||||
@@ -305,39 +312,33 @@ class _MediaDetailScreenState extends State<MediaDetailScreen> {
 | 
			
		||||
            setState(() => _readyItemIds.add(item.id));
 | 
			
		||||
          }
 | 
			
		||||
        },
 | 
			
		||||
        onDoubleTap: () => _handleFavoriteToggle(item, isFavorite),
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      mediaWidget = const Icon(Icons.help_outline, size: 100);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    final bool isFavorite =
 | 
			
		||||
        item.favorites?.any((f) => f.userId == authController.user.value?.id) ??
 | 
			
		||||
        false;
 | 
			
		||||
 | 
			
		||||
    return Hero(
 | 
			
		||||
      tag: 'media_${item.id}',
 | 
			
		||||
      child: GestureDetector(
 | 
			
		||||
        onDoubleTap: () => _handleFavoriteToggle(item, isFavorite),
 | 
			
		||||
        child: Stack(
 | 
			
		||||
          alignment: Alignment.center,
 | 
			
		||||
          children: [
 | 
			
		||||
            mediaWidget,
 | 
			
		||||
            AnimatedOpacity(
 | 
			
		||||
              opacity: _showFavoriteAnimation[item.id] ?? false ? 1.0 : 0.0,
 | 
			
		||||
              duration: const Duration(milliseconds: 200),
 | 
			
		||||
              child: AnimatedScale(
 | 
			
		||||
                scale: _showFavoriteAnimation[item.id] ?? false ? 1.0 : 0.5,
 | 
			
		||||
                duration: const Duration(milliseconds: 400),
 | 
			
		||||
                curve: Curves.easeOutBack,
 | 
			
		||||
                child: Icon(
 | 
			
		||||
                  isFavorite ? Icons.favorite : Icons.favorite_outline,
 | 
			
		||||
                  color: Colors.red,
 | 
			
		||||
                  size: 100,
 | 
			
		||||
                ),
 | 
			
		||||
      child: Stack(
 | 
			
		||||
        alignment: Alignment.center,
 | 
			
		||||
        children: [
 | 
			
		||||
          mediaWidget,
 | 
			
		||||
          AnimatedOpacity(
 | 
			
		||||
            opacity: _showFavoriteAnimation[item.id] ?? false ? 1.0 : 0.0,
 | 
			
		||||
            duration: const Duration(milliseconds: 200),
 | 
			
		||||
            child: AnimatedScale(
 | 
			
		||||
              scale: _showFavoriteAnimation[item.id] ?? false ? 1.0 : 0.5,
 | 
			
		||||
              duration: const Duration(milliseconds: 400),
 | 
			
		||||
              curve: Curves.easeOutBack,
 | 
			
		||||
              child: Icon(
 | 
			
		||||
                isFavorite ? Icons.favorite : Icons.favorite_outline,
 | 
			
		||||
                color: Colors.red,
 | 
			
		||||
                size: 100,
 | 
			
		||||
              ),
 | 
			
		||||
            ),
 | 
			
		||||
          ],
 | 
			
		||||
        ),
 | 
			
		||||
          ),
 | 
			
		||||
        ],
 | 
			
		||||
      ),
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user