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:provider/provider.dart'; import 'package:sendtrain/daos/activities_dao.dart'; import 'package:sendtrain/database/database.dart'; import 'package:sendtrain/extensions/string_extensions.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 StatefulWidget { const SessionView({super.key, required this.session}); final Session session; @override State createState() => _SessionViewState(); } class _SessionViewState extends State { @override Widget build(BuildContext context) { final Session session = widget.session; initializeDateFormatting('en'); final DateFormat dateFormat = DateFormat('yyyy-MM-dd'); return FutureBuilder>( future: ActivitiesDao(Provider.of(context)) .sessionActivities(session.id), builder: (context, snapshot) { if (snapshot.hasData) { final activities = snapshot.data!; 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: [ 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.toTitleCase())), 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), const Padding( padding: EdgeInsets.fromLTRB(15, 30, 0, 10), child: Text( style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold), 'Activites:')), SessionViewActivities(activities: activities), ], )); } else { return Container( alignment: Alignment.center, child: SizedBox( height: 50.0, width: 50.0, child: CircularProgressIndicator(), )); } }); } }