media default and content

This commit is contained in:
Joshua Burman
2025-01-03 20:37:45 -05:00
parent 32826abcea
commit 9fc5fb5d22
5 changed files with 26 additions and 119 deletions

View File

@ -7,17 +7,6 @@ import 'package:sendtrain/daos/sessions_dao.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/widgets/generic/elements/form_text_input.dart';
// class AchievementEditor extends StatefulWidget {
// const AchievementEditor({super.key, required this.session, this.callback});
// final Session session;
// final Function? callback;
// @override
// State<AchievementEditor> createState() => _AchievementEditorState();
// }
// class _AchievementEditorState extends State<AchievementEditor> {
class AchievementEditor extends StatelessWidget {
AchievementEditor({super.key, required this.session, this.callback});
@ -43,7 +32,7 @@ class AchievementEditor extends StatelessWidget {
child: Text('Create Achievement',
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.titleLarge)),
FormTextInput(controller: tec, title: 'Achievement'),
FormTextInput(controller: tec, title: 'Achievement', icon: Icon(Icons.military_tech_rounded)),
Row(mainAxisAlignment: MainAxisAlignment.end, children: [
Padding(
padding: EdgeInsets.only(top: 10),
@ -52,7 +41,7 @@ class AchievementEditor extends StatelessWidget {
onPressed: () async {
session.achievements;
List achievements =
json.decode(session.achievements!);
json.decode(session.achievements ?? "[]");
achievements.add(tec.text);
Session updatedSession = session.copyWith(
achievements:

View File

@ -4,7 +4,6 @@ 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/daos/sessions_dao.dart';
import 'package:sendtrain/database/database.dart';
import 'package:sendtrain/extensions/string_extensions.dart';
@ -70,10 +69,6 @@ class _SessionViewState extends State<SessionView> {
stream: SessionsDao(Provider.of<AppDatabase>(context))
.watchSession(session.id),
builder: (context, snapshot) {
// return StreamBuilder<List<Activity>>(
// stream: ActivitiesDao(Provider.of<AppDatabase>(context))
// .watchSessionActivities(session.id),
// builder: (context, snapshot) {
if (snapshot.hasData) {
return Scaffold(
floatingActionButtonLocation: ExpandableFab.location,
@ -158,7 +153,8 @@ class _SessionViewState extends State<SessionView> {
style: const TextStyle(
fontSize: 25, fontWeight: FontWeight.bold),
title())),
SessionViewAchievements(session: session, callback: resetState),
SessionViewAchievements(
session: session, callback: resetState),
Padding(
padding: const EdgeInsets.only(left: 15, right: 15),
child: Text(

View File

@ -83,99 +83,3 @@ class SessionViewAchievements extends StatelessWidget {
);
}
}
// class SessionViewAchievements extends StatefulWidget {
// const SessionViewAchievements({super.key, required this.session});
// final Session session;
// @override
// State<SessionViewAchievements> createState() =>
// _SessionViewAchievementsState();
// }
// class _SessionViewAchievementsState extends State<SessionViewAchievements> {
// late final AppDatabase db;
// late Session session;
// late List achievements;
// @override
// void initState() {
// super.initState();
// db = Provider.of<AppDatabase>(context, listen: false);
// session = widget.session;
// achievements = json.decode(session.achievements!);
// }
// void resetState(int sessionId) async {
// Session updatedSession =
// await SessionsDao(Provider.of<AppDatabase>(context, listen: false))
// .find(sessionId);
// setState(() {
// session = updatedSession;
// achievements = json.decode(session.achievements!);
// });
// }
// Session updateAchievements(int index) {
// achievements.removeAt(index);
// return session.copyWith(
// achievements: Value<String>(json.encode(achievements)));
// }
// @override
// Widget build(BuildContext context) {
// Widget content;
// if (achievements.isEmpty) {
// content = Padding(
// padding: const EdgeInsets.only(left: 10, right: 5),
// child: ActionChip(
// visualDensity: VisualDensity.compact,
// avatar: const Icon(Icons.check_circle_outline),
// label: Text(maxLines: 1, 'Add Achievements!'),
// onPressed: () {
// showEditorSheet(context,
// AchievementEditor(session: session, callback: resetState));
// },
// ));
// } else {
// content = ListView.builder(
// scrollDirection: Axis.horizontal,
// padding: const EdgeInsets.fromLTRB(10, 0, 10, 0),
// itemCount: achievements.length,
// itemBuilder: (BuildContext context, int index) {
// return Padding(
// padding: const EdgeInsets.only(right: 5),
// child: ActionChip(
// visualDensity: VisualDensity.compact,
// avatar: const Icon(Icons.check_circle_outline),
// label: Text(
// maxLines: 1,
// achievements[index].toString().toTitleCase()),
// onPressed: () async {
// // remove the achievement at index
// // then update session
// Session newSession = updateAchievements(index);
// await showUpdateDialog(
// 'Achievement Removal',
// 'Would you like to remove this achievement?',
// context,
// SessionsDao(db),
// newSession,
// resetState);
// }));
// },
// );
// }
// return Column(
// children: [
// Padding(
// padding: const EdgeInsets.only(bottom: 10),
// child: SizedBox(height: 40, child: content)),
// ],
// );
// }
// }

View File

@ -2,7 +2,9 @@ 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/media/media_card.dart';
import 'package:sendtrain/widgets/sessions/session_editor.dart';
class SessionViewMedia extends StatefulWidget {
const SessionViewMedia({super.key, required this.session});
@ -27,8 +29,24 @@ class _SessionViewMediaState extends State<SessionViewMedia> {
if (snapshot.hasData) {
final mediaItems = snapshot.data!;
List<Widget> mediaCards = List.generate(mediaItems.length,
(i) => MediaCard(media: mediaItems[i], callback: resetState));
List<Widget> content;
if (mediaItems.isNotEmpty) {
List<Widget> mediaCards = List.generate(mediaItems.length,
(i) => MediaCard(media: mediaItems[i], callback: resetState));
content = mediaCards;
} else {
content = [
FloatingActionButton(
onPressed: () {
showEditorSheet(
context,
SessionEditor(
session: widget.session, callback: resetState));
},
mini: true,
child: Icon(Icons.add_a_photo_rounded))
];
}
return Column(
children: [
@ -41,7 +59,7 @@ class _SessionViewMediaState extends State<SessionViewMedia> {
crossAxisSpacing: 5,
mainAxisSpacing: 5,
crossAxisCount: 1,
children: mediaCards))
children: content))
],
);
} else {