activity things #6

Merged
jshbrmn merged 5 commits from activity-things into main 2025-01-07 12:50:19 -08:00
2 changed files with 75 additions and 45 deletions
Showing only changes of commit d9a5599a4b - Show all commits

View File

@ -22,6 +22,20 @@ class ActivityView extends StatefulWidget {
} }
class _ActivityViewState extends State<ActivityView> { class _ActivityViewState extends State<ActivityView> {
List<ActivityMuscle> activity_muscle(Activity activity) {
List<ActivityMuscle> muscles = [];
if (activity.primaryMuscles != null) {
muscles.add(activity.primaryMuscles!);
}
if (activity.secondaryMuscles != null) {
muscles.add(activity.secondaryMuscles!);
}
return muscles;
}
List<Widget> action(actions) { List<Widget> action(actions) {
if (actions.isNotEmpty) { if (actions.isNotEmpty) {
return [ return [
@ -163,46 +177,58 @@ class _ActivityViewState extends State<ActivityView> {
fontSize: 25, fontSize: 25,
fontWeight: FontWeight.bold), fontWeight: FontWeight.bold),
activity.title.toTitleCase())), activity.title.toTitleCase())),
Padding( SizedBox(
padding: const EdgeInsets.fromLTRB(10, 0, 0, 10), height: 40,
child: child: ListView(
Flex(direction: Axis.horizontal, children: [ scrollDirection: Axis.horizontal,
ActivityViewCategories<List<ActivityLevel>>( padding:
icon: Icon(Icons.stairs_rounded), const EdgeInsets.fromLTRB(10, 0, 10, 0),
text: "Activity Level", shrinkWrap: true,
object: activity.level != null children: [
? [activity.level!] ActivityViewCategories<List<ActivityLevel>>(
: []), icon: Icon(Icons.stairs_rounded),
// ActivityViewCategories<List<ActivityMechanic>>( text: "Activity Level",
// icon: Icon(Icons.), object: activity.level != null
// text: 'Activity Mechanic', ? [activity.level!]
// object: activity.mechanic != null : []),
// ? [activity.mechanic!] // ActivityViewCategories<List<ActivityMechanic>>(
// : []), // icon: Icon(Icons.),
ActivityViewCategories<List<ActivityEquipment>>( // text: 'Activity Mechanic',
icon: Icon(Icons.fitness_center_rounded), // object: activity.mechanic != null
text: 'Activity Equipments', // ? [activity.mechanic!]
object: activity.equipment != null // : []),
? [activity.equipment!] ActivityViewCategories<
: []), List<ActivityEquipment>>(
ActivityViewCategories<List<ActivityType>>( icon:
icon: Icon(Icons.type_specimen_rounded), Icon(Icons.fitness_center_rounded),
text: 'Activity Type', text: 'Equipment Used',
object: activity.type != null object: activity.equipment != null
? [activity.type!] ? [activity.equipment!]
: []), : []),
])), ActivityViewCategories<List<ActivityType>>(
icon: Icon(Icons.type_specimen_rounded),
text: 'Activity Type',
object: activity.type != null
? [activity.type!]
: []),
ActivityViewCategories<
List<ActivityMuscle>>(
icon: Icon(Icons.person),
text: 'Muscles used',
object: activity_muscle(activity))
])),
Padding( Padding(
padding: const EdgeInsets.only( padding: const EdgeInsets.only(
top: 0, bottom: 0, left: 15, right: 15), top: 10, bottom: 0, left: 15, right: 15),
child: Text( child: Text(
maxLines: 4, maxLines: 4,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
// softWrap: true, // softWrap: true,
textAlign: TextAlign.left, textAlign: TextAlign.left,
style: const TextStyle(fontSize: 15), style: const TextStyle(fontSize: 15),
jsonToDescription([json jsonToDescription([
.decode(activity.description ?? "")[0]]))), json.decode(activity.description ?? "")[0]
]))),
Padding( Padding(
padding: EdgeInsets.only(right: 15), padding: EdgeInsets.only(right: 15),
child: Align( child: Align(

View File

@ -2,7 +2,11 @@ import 'package:flutter/material.dart';
import 'package:sendtrain/extensions/string_extensions.dart'; import 'package:sendtrain/extensions/string_extensions.dart';
class ActivityViewCategories<T extends List<Enum>> extends StatelessWidget { class ActivityViewCategories<T extends List<Enum>> extends StatelessWidget {
const ActivityViewCategories({super.key, required this.object, required this.icon, required this.text}); const ActivityViewCategories(
{super.key,
required this.object,
required this.icon,
required this.text});
final T object; final T object;
final Icon icon; final Icon icon;
@ -10,22 +14,22 @@ class ActivityViewCategories<T extends List<Enum>> extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return SizedBox( return ListView.builder(
height: 40, shrinkWrap: true,
child: ListView.builder( scrollDirection: Axis.horizontal,
shrinkWrap: true, // padding: const EdgeInsets.only(right: 10, left: 10),
scrollDirection: Axis.horizontal, itemCount: object.length,
padding: const EdgeInsets.only(right: 10), itemBuilder: (BuildContext context, int index) {
itemCount: object.length, return Padding(
itemBuilder: (BuildContext context, int index) { padding: EdgeInsets.only(right: 10),
return ActionChip( child: ActionChip(
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
avatar: icon, avatar: icon,
label: Text(maxLines: 1, object[index].name.toTitleCase()), label: Text(maxLines: 1, object[index].name.toTitleCase()),
tooltip: text, tooltip: text,
onPressed: () {}, onPressed: () {},
); ));
}, },
)); );
} }
} }