fitness_workout 1.0.0
fitness_workout: ^1.0.0 copied to clipboard
Fitness workout runner for Flutter. Strength (sets x reps x weight) and cardio (intervals/laps) controllers with persistable state, pluggable storage, drop-in dark-first widgets, editors, stats, PRs a [...]
Changelog #
1.0.0 — first stable release #
This is the first stable, fully-featured release of fitness_workout on
pub.dev. Earlier 0.0.x versions were experimental prototypes; the API
has been redesigned from scratch and is now committed to (no expected
breaking changes within the 1.x line).
The full package ships: the strength + cardio runner controllers, the drop-in widget kit, editors, intelligence layer (overload, stats, PR detection, recommendations, readiness, deload, plan generator, warmup generator), content catalogues + templates, programs, dashboard, onboarding sheets, privacy / consent / audit helpers, generic sync DTOs, coach mode hooks, haptic / audio / voice hooks and a focus-mode runner UI.
Models & schema #
SetType { working, warmup, drop, failure, amrap, timed }onWorkoutSetandPerformedSet, plustargetDurationfor AMRAP / timed work.ExerciseEquipment,MovementPattern,ExerciseDifficulty,unilateral,aliases,searchTermsare now first-class onWorkoutExercise(legacymetareads stay supported).WorkoutBlock+WorkoutPlan.blocksfor supersets / circuits.PerformedExercise.substitutedFrom/PerformedExerciseDetails.substitutedFrompreserve mid-session exercise swaps in result history.kPluginSchemaVersionstamped into every top-level JSON payload.metonWorkoutExercise,CardioInterval,CardioLapandPerformedExerciseDetailsenablesWorkoutResult.kcal/CardioResult.kcalenergy estimates viaEnergyEstimator.
Runner controller #
WorkoutRunner.pause()/resume()withpausedForexcluded fromelapsed, plusonPaused/onResumed(delta)callbacks.- Rest hooks:
onRestTick,onRestCompleted,onRestSkippedandextendRest(extra)+restTotal. - Timed/AMRAP accessors:
currentActiveSet,currentSetTargetDuration,currentSetRemaining,isCurrentSetTimed,onTimedSetTargetReached. - Plan editing API:
addExercise,removeExercise,moveExercise(re-maps performed indices),replaceSet,duplicateSet,reorderSets,substituteExercise(index, replacement),replacePlan(plan, {preservePerformed}). - Optional
bodyWeightKgfield on both runners for live kcal stats.
Stats, intelligence & helpers #
WorkoutResult.toCsv()/CardioResult.toCsv()exports.WorkoutStats,PersonalRecords(incl. cardio PRs),WeeklyWorkoutSummary,OverloadEngine,Recommendations,Readiness,PlanGenerator,WarmupGenerator,RestPreset,DeloadPlan,ExerciseSearch,ExerciseAlternatives,ExerciseIndex,EquipmentProfile,ExercisePickerandStreamingStatsfor paginated history.WorkoutHistoryStorage,PagedWorkoutHistoryStorage,ExerciseFavoritesStorage,SessionRatingStorage,PlanDraftStorage,ScheduledWorkoutStorage,CustomEntityRegistry(+ in-memory implementations) and aCatalogmerger that layers user-defined entries over the bundled defaults.
Content #
DefaultExercises,DefaultPlans,DefaultCardioPlansare joined byStrengthTemplates(full-body, PPL, upper/lower, 5x5) andCardioTemplates(Tabata, HIIT, LISS, Pyramid, easy bike, run/walk).ProgramTemplatesships a Beginner 5x5, a 4-week PPL and a 10K base cardio program through the newTrainingProgrammodel.
UI #
WorkoutRunnerLocalizations+WorkoutRunnerLocalizationsScopefor i18n; bundled English defaults migrated through hot surfaces.WorkoutRunnerThemeDatagains set-type accents, timer/rest tokens and a.fromColorScheme(ColorScheme)factory.- Focus runner (Phase 2.8):
RunnerFocusPanel+SessionHeader,FocusActionBar,ExerciseFocusCard,SetTimeline,NextUpStrip. The classicRunnerPanelstays as the default — opt in to the focus layout per screen. - Editors:
PlanEditorScreen,CardioPlanEditorScreen,ExerciseEditorSheet,MuscleEditorSheet,CategoryEditorSheet,CatalogPickerSheet,MetaFieldRow. - Dashboard:
WeeklySummaryCard,PrHighlightsCard,VolumeTrendChart(zero-depCustomPainter),RecentSessionsList. - Onboarding:
GoalPickerSheet,EquipmentPickerSheet,ExperienceLevelPicker,PlanGenerationProfileSheet. ResultsView/CardioResultsViewgainstatBuilder+ publicResultsStatTile/CardioResultsStatTile;RunnerPanelgainsheaderBuilder+finishButtonBuilder;SetRowgainstrailingBuilder(+SetRowSlotData,SetRowState).- Accessibility pass: 48 dp min touch targets, semantics on stepper /
timer / rest overlay (
liveRegion),MediaQuery.disableAnimationsOfrespected across rest overlay, runner pill button, set badge, rest chip, AnimatedPadding sheets. - Set-type-aware visuals: warm-up dimmed, AMRAP/timed countdown,
type pill badges via
theme.accentFor(type).
Feedback layer #
RunnerHaptics(+DefaultRunnerHaptics) andRunnerHapticsBridge.RunnerAudio/SoundCue/RunnerVoiceCuesandRunnerAudioBridge— plugin stays audio-free; apps wire their engine.SessionRating+SessionRatingStats+ storage.
Composition & flow #
- Set notes / form cues / completion rules / tags via side-car helpers
(
WorkoutNotes,NotesTimeline,FormCues,WorkoutCompletion- rule hierarchy,
WorkoutTags+TagFilter).
- rule hierarchy,
WorkoutImport.fromBundlewith replace/duplicate/skip policies,ShareHelpers.toShareText/toMarkdown(strength + cardio),ScheduledWorkout+ query helpers.
Privacy & sync #
DataExport.bundle(versioned, indent-2 JSON) andRedactionhelpers.ConsentScope+ConsentState+ConsentGate,ExportAuditEntry+ExportAuditSink(in-memory impl included).- Generic
SyncEnvelope<T>+SyncMergewith last-write-wins / source- priority / manual strategies and conflict reporting.
Coach mode hooks #
CoachingMessage,CoachSignal,DefaultCoachEnginewith a swappable signal → message mapper. Apps provide tonality; plugin only emits signals.
Quality #
- API snapshot test (
test/api/public_api_snapshot_test.dart) guards the public surface from accidental regressions. - Test count grew from 60 (1.0.0) to 685 — covering models, controllers, storage, intelligence, widgets and rendering paths.
flutter analyzeclean across the whole repo.
See doc/ROADMAP.md for the roadmap that drove this release and the
phases that are still open (cardio focus variant, undo, pace-zone
alerts, classic-runner deprecation timeline).
0.0.5 #
- Bug-fix for finish workout from default screen callback.
0.0.4 #
- UI optimisations.
0.0.3 #
- Default muscle, exercise and category data.
- Global finish hook on the result model.
- Detailed
WorkoutResultshape.
0.0.2 #
- Minor edits.
0.0.1 #
- Initial release.
