import 'package:flutter/material.dart'; import '../models/attachment_media_type_enum.dart'; import '../models/media_attachment.dart'; import '../screens/image_viewer_screen.dart'; import 'audio_video/av_control.dart'; import 'image_control.dart'; class MediaAttachmentViewerControl extends StatefulWidget { final List attachments; final int index; final double? width; final double? height; const MediaAttachmentViewerControl({ super.key, required this.attachments, required this.index, this.width, this.height, }); @override State createState() => _MediaAttachmentViewerControlState(); } class _MediaAttachmentViewerControlState extends State { @override Widget build(BuildContext context) { final item = widget.attachments[widget.index]; if (item.explicitType == AttachmentMediaType.video) { return AVControl( videoUrl: item.uri.toString(), width: widget.width, height: widget.height, description: item.description, ); } if (item.explicitType != AttachmentMediaType.image) { return Text('${item.explicitType}: ${item.uri}'); } return ImageControl( width: widget.width, height: widget.height, imageUrl: item.thumbnailUri.toString(), altText: item.description, onTap: () async { Navigator.push(context, MaterialPageRoute(builder: (context) { return ImageViewerScreen( attachments: widget.attachments, initialIndex: widget.index, ); })); }, ); } }