import 'dart:convert'; import 'dart:io'; import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:sendtrain/daos/media_items_dao.dart'; import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/helpers/widget_helpers.dart'; import 'package:sendtrain/widgets/builders/dialogs.dart'; import 'package:video_player/video_player.dart'; class MediaCard extends StatefulWidget { const MediaCard({super.key, required this.media, this.callback}); final MediaItem media; final Function? callback; @override State createState() => _MediaCardState(); } class _MediaCardState extends State { // late VideoPlayerController _controller; late MediaItem media; late Function? callback; @override void initState() { super.initState(); media = widget.media; callback = widget.callback; // _controller = VideoPlayerController.asset(dataSource) // ..initialize().then((_) { // setState(() {}); //when your thumbnail will show. // }); } // @override // void dispose() { // super.dispose(); // _controller.dispose(); // } // Future createVideoPlayer() async { // final File file = // await ImgB64Decoder.fileFromB64String(widget.encodedBytes); // final VideoPlayerController controller = VideoPlayerController.file(file); // await controller.initialize(); // await controller.setLooping(true); // return controller; // } @override Widget build(BuildContext context) { DecorationImage mediaImage(MediaItem media) { dynamic image; if (media.type == MediaType.image || media.type == MediaType.location) { image = NetworkImage(media.reference); } else if (media.type == MediaType.localImage) { image = Image.memory(base64Decode(media.reference)).image; } else if (media.type == MediaType.youtube) { image = NetworkImage('https://img.youtube.com/vi/${media.reference}/0.jpg'); } else if (media.type == MediaType.localVideo) { } return DecorationImage(image: image, fit: BoxFit.cover); } return Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), image: mediaImage(media), ), child: Card( color: Colors.transparent, shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10)), shadowColor: const Color.fromARGB(0, 255, 255, 255), child: TextButton( onLongPress: () => showRemovalDialog( 'Media Removal', 'Would you like to permanently remove this media from the current session?', context, MediaItemsDao(Provider.of(context, listen: false)), media) .then((result) { if (callback != null) { callback!(); } }), onPressed: () => showMediaDetailWidget(context, media), child: const ListTile( title: Text(''), )))); } }