SendTrain/lib/widgets/sessions/session_view_achievements.dart

140 lines
5.3 KiB
Dart

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:sendtrain/daos/session_activities_dao.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/widget_helpers.dart';
import 'package:sendtrain/widgets/achievements/achievement_editor.dart';
import 'package:sendtrain/widgets/builders/dialogs.dart';
class SessionViewAchievements extends StatelessWidget {
const SessionViewAchievements({super.key, required this.session});
final Session session;
// List<String> getAchievements(List<SessionActivity> sessionActivities) {
// List<String> achievements = [];
// for (int i = 0; i < sessionActivities.length; i++) {
// final SessionActivity sessionActivity = sessionActivities[i];
// final List? saAchievments = sessionActivity.achievements?.split(',');
// if (saAchievments != null) {
// saAchievments.forEach((achievement) => achievements.add(achievement));
// }
// }
// return achievements;
// }
void resetState() {
// setState(() {});
}
@override
Widget build(BuildContext context) {
Widget content;
if (session.achievements == null) {
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(callback: resetState));
},
));
} else {
final achievements = json.decode(session.achievements!);
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: () {
showUpdateDialog(
'Achievement Removal',
'Would you like to remove this achievement?',
context,
SessionsDao(
Provider.of<AppDatabase>(context, listen: false)),
session);
}));
},
);
}
return Column(
children: [
Padding(
padding: const EdgeInsets.only(bottom: 10),
child: SizedBox(height: 40, child: content)),
],
);
// return StreamBuilder<List<SessionActivity>>(
// stream: SessionActivitiesDao(Provider.of<AppDatabase>(context))
// .fromSessionId(session.id).asStream(),
// builder: (context, snapshot) {
// if (snapshot.hasData) {
// final sessionActivities = snapshot.data!;
// final achievements = getAchievements(sessionActivities);
// 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(achievements: achievements, 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].toTitleCase()),
// onPressed: () {
// // remove achievements
// },
// ));
// },
// );
// }
// return Column(
// children: [
// Padding(
// padding: const EdgeInsets.only(bottom: 10),
// child: SizedBox(height: 40, child: content)),
// ],
// );
// } else {
// return Padding(
// padding: EdgeInsets.all(15),
// child: CircularProgressIndicator());
// }
// });
}
}