import 'package:drift/drift.dart' hide Column; import 'package:flutter/material.dart'; import 'package:flutter_expandable_fab/flutter_expandable_fab.dart'; import 'package:intl/intl.dart'; import 'package:intl/date_symbol_data_local.dart'; import 'package:sendtrain/database/daos/activities_dao.dart'; import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/models/session_model.dart'; import 'package:sendtrain/widgets/session_view_achievements.dart'; import 'package:sendtrain/widgets/session_view_activities.dart'; import 'package:sendtrain/widgets/session_view_media.dart'; class SessionView extends StatelessWidget { SessionView({super.key, required this.data, required this.session}); final SessionModel data; final Session session; final AppDatabase database = AppDatabase(); @override Widget build(BuildContext context) { initializeDateFormatting('en'); final DateFormat dateFormat = DateFormat('yyyy-MM-dd'); return FutureBuilder<List<Activity>>( future: ActivitiesDao(database).sessionActivities(session.id), builder: (context, snapshot) { if (snapshot.hasData) { final activities = snapshot.data!; database.close(); return Scaffold( floatingActionButtonLocation: ExpandableFab.location, floatingActionButton: ExpandableFab( distance: 70, type: ExpandableFabType.up, overlayStyle: ExpandableFabOverlayStyle( color: Colors.black.withOpacity(0.5), blur: 10, ), children: [ FloatingActionButton.extended( icon: const Icon(Icons.history_outlined), label: Text('Restart'), onPressed: () {}, ), FloatingActionButton.extended( icon: const Icon(Icons.done_all_outlined), label: Text('Done'), onPressed: () {}, ), FloatingActionButton.extended( icon: const Icon(Icons.edit_outlined), label: Text('Edit'), onPressed: () {}, ), ]), body: Column( crossAxisAlignment: CrossAxisAlignment.start, children: <Widget>[ AppBar( centerTitle: true, title: Text( 'Session @ ${dateFormat.format(session.date as DateTime)}', style: const TextStyle(fontSize: 15)), ), Padding( padding: const EdgeInsets.only( left: 15, right: 20, top: 15, bottom: 10), child: Text( maxLines: 1, style: const TextStyle( fontSize: 25, fontWeight: FontWeight.bold), session.title)), SessionViewAchievements(session: session), Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: Text( style: const TextStyle(fontSize: 15), session.content)), const Padding( padding: EdgeInsets.fromLTRB(15, 30, 0, 10), child: Text( style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold), 'Media:')), SessionViewMedia(session: session, media: data.media), const Padding( padding: EdgeInsets.fromLTRB(15, 30, 0, 10), child: Text( style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold), 'Activites:')), SessionViewActivities( activities: data.activities, data: activities), ], )); } else { return const CircularProgressIndicator(); } }); } }