relatica/lib/controls/media_attachment_viewer_con...

61 wiersze
1.6 KiB
Dart

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<MediaAttachment> 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<MediaAttachmentViewerControl> createState() =>
_MediaAttachmentViewerControlState();
}
class _MediaAttachmentViewerControlState
extends State<MediaAttachmentViewerControl> {
@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,
);
}));
},
);
}
}