import 'package:flutter/material.dart'; import 'package:sendtrain/classes/media.dart'; import 'package:sendtrain/models/activity_model.dart'; import 'package:sendtrain/widgets/activity_view.dart'; class ActivityCard extends StatelessWidget { const ActivityCard({super.key, required this.activity}); final ActivityModel activity; @override Widget build(BuildContext context) { return Card( color: const Color(0xff3A5FB6), clipBehavior: Clip.hardEdge, child: InkWell( splashColor: Colors.deepPurple, onTap: () => showGeneralDialog( barrierColor: Colors.black.withOpacity(0.5), transitionDuration: const Duration(milliseconds: 220), transitionBuilder: (BuildContext context, Animation animation, Animation secondaryAnimation, Widget child) { Animation custom = Tween( begin: const Offset(0.0, 1.0), end: const Offset(0.0, 0.0)) .animate(animation); return SlideTransition( position: custom, child: Dialog.fullscreen( child: ActivityView(activity: activity))); }, barrierDismissible: true, barrierLabel: '', context: context, pageBuilder: (context, animation1, animation2) { return Container(); }), child: Column( mainAxisSize: MainAxisSize.min, children: [ ListTile( leading: Padding( padding: const EdgeInsets.fromLTRB(0, 0, 0, 0), child: Container( width: 60, decoration: BoxDecoration( image: DecorationImage( fit: BoxFit.cover, image: findMediaByType( activity.actions[0].media, 'image')), // color: Colors.blue, borderRadius: const BorderRadius.all(Radius.elliptical(10, 10)), ), )), title: Text(maxLines: 1, activity.title), subtitle: Text(maxLines: 2, activity.description), ), ], )), ); } ImageProvider findMediaByType(List? media, String type) { var found = media!.where((m) => m.type == 'image'); if (found.isNotEmpty) { return NetworkImage(found.first.reference); } else { // Element is not found return const AssetImage('assets/images/placeholder.jpg'); } } }