db changes, seed changes, media view work for local images, and video prep, initial achievement work
This commit is contained in:
@ -1,14 +1,55 @@
|
||||
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 StatelessWidget {
|
||||
const MediaCard({super.key, required this.media});
|
||||
class MediaCard extends StatefulWidget {
|
||||
const MediaCard({super.key, required this.media, this.callback});
|
||||
|
||||
final MediaItem media;
|
||||
final Function? callback;
|
||||
|
||||
@override
|
||||
State<MediaCard> createState() => _MediaCardState();
|
||||
}
|
||||
|
||||
class _MediaCardState extends State<MediaCard> {
|
||||
// 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<VideoPlayerController> 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) {
|
||||
@ -20,7 +61,10 @@ class MediaCard extends StatelessWidget {
|
||||
} 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');
|
||||
image =
|
||||
NetworkImage('https://img.youtube.com/vi/${media.reference}/0.jpg');
|
||||
} else if (media.type == MediaType.localVideo) {
|
||||
|
||||
}
|
||||
|
||||
return DecorationImage(image: image, fit: BoxFit.cover);
|
||||
@ -37,6 +81,18 @@ class MediaCard extends StatelessWidget {
|
||||
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<AppDatabase>(context,
|
||||
listen: false)),
|
||||
media)
|
||||
.then((result) {
|
||||
if (callback != null) {
|
||||
callback!();
|
||||
}
|
||||
}),
|
||||
onPressed: () => showMediaDetailWidget(context, media),
|
||||
child: const ListTile(
|
||||
title: Text(''),
|
||||
|
@ -25,6 +25,7 @@ class MediaDetails extends StatelessWidget {
|
||||
media.description,
|
||||
style: const TextStyle(fontSize: 20),
|
||||
)),
|
||||
|
||||
const Divider(
|
||||
indent: 20,
|
||||
endIndent: 20,
|
||||
|
Reference in New Issue
Block a user