muscle_map
A Flutter package for displaying an interactive human body muscle map. Supports tap-to-select muscles and intensity-based heat map visualization.
Fork of muscle_selector by EmilCes. This package extends the original with intensity mapping, additional muscle groups, and bug fixes.
Features
- Interactive SVG-based human body diagrams (full body, front only, back only)
MusclePickerMap— tap muscles to select/deselect them; get a callback with the selected setMuscleIntensityMap— display muscles colored by workout intensity (light / medium / hard)
Installation
Add to your pubspec.yaml:
dependencies:
muscle_map: any
Then run:
flutter pub get
Usage
MusclePickerMap
Lets users tap muscles to select them. Returns a Set<Muscle> on every change.
import 'package:muscle_map/muscle_map.dart';
MusclePickerMap(
map: Maps.BODY, // Maps.BODY | Maps.FRONT_BODY | Maps.BACK_BODY
onChanged: (muscles) {
print(muscles); // Set<Muscle>
},
strokeColor: Colors.black,
selectedColor: Colors.blue,
actAsToggle: true, // tap again to deselect
initialSelectedGroups: ['chest', 'biceps'],
)
MuscleIntensityMap
Displays muscles colored by intensity level. Pass an initialSelectedGroups map of group name → MuscleIntensity.
MuscleIntensityMap(
map: Maps.BODY,
initialSelectedGroups: {
'chest': MuscleIntensity.light,
'biceps': MuscleIntensity.hard,
'triceps': MuscleIntensity.hard,
'shoulders': MuscleIntensity.medium,
},
onChanged: (muscles) {},
strokeColor: Colors.black,
)
Muscle Groups
The following group keys can be used with initialSelectedGroups:
chest, shoulders, obliques, abs, abductor, biceps, calves, forearm, glutes, harmstrings, lats, upper_back, quads, trapezius, triceps, adductors, lower_back, neck
Credits
Forked from muscle_selector by EmilCes.
License
See LICENSE.