import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:sendtrain/daos/sessions_dao.dart'; import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/extensions/string_extensions.dart'; import 'package:sendtrain/helpers/date_helpers.dart'; import 'package:sendtrain/helpers/media_helpers.dart'; import 'package:sendtrain/widgets/builders/dialogs.dart'; import 'package:sendtrain/widgets/generic/elements/card_content.dart'; import 'package:sendtrain/widgets/generic/elements/card_image.dart'; import 'package:sendtrain/widgets/sessions/session_view.dart'; class SessionCardFull extends StatefulWidget { const SessionCardFull( {super.key, required this.session, required this.mediaItems}); final Session session; final List mediaItems; @override State createState() => _SessionCardFullState(); } class _SessionCardFullState extends State { @override Widget build(BuildContext context) { final Session session = widget.session; final List mediaItems = widget.mediaItems; return Card( color: (session.status == SessionStatus.started) ? Theme.of(context).colorScheme.primaryContainer : Theme.of(context).colorScheme.surfaceContainerLow, margin: const EdgeInsets.fromLTRB(15, 15, 15, 0), clipBehavior: Clip.hardEdge, child: InkWell( splashColor: Colors.deepPurple, onTap: () => showGenericDialog(SessionView(session: session), context), child: Column( mainAxisSize: MainAxisSize.min, children: [ ListTile( contentPadding: EdgeInsets.only(left: 8), leading: CardImage(image: findMediaByType(mediaItems, 'image')), title: Text(maxLines: 1, session.title.toTitleCase()), subtitle: Text( maxLines: 1, dateFormat.format(session.date as DateTime)), trailing: IconButton( padding: EdgeInsets.all(0), alignment: Alignment.topCenter, icon: Icon(Icons.close_rounded), onPressed: () { showRemovalDialog( 'Session Removal', 'Would you like to permanently remove this session?', context, SessionsDao(Provider.of(context, listen: false)), session) .then((result) { setState(() {}); }); }, ), ), CardContent(content: session.content) ], )), ); } }