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

View File

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