screen-locker/stronglift_replacement
Krzysztof kuhy Rudnicki a7ca5bfbb4 Split settings_screen.dart (503 -> 211) — the file-length gate now passes
Last of the ten. The ~190-line `build()` was the bulk, so it became five
private StatelessWidgets rather than list-building methods, per the note in
the todo that a previous attempt to slice them out as a raw widget-list getter
produced unbalanced brackets.

  settings_screen.dart                    211  state, lifecycle, setState paths
  settings_screen_sections.dart           190  SYNC, OFFLINE BACKUP, app bar
  settings_screen_exercise_sections.dart  161  WEIGHTS, TARGET REPS, THRESHOLDS
  settings_screen_widget.dart              89  the public widget + 11 seams
  settings_screen_actions.dart             86  setState-free actions

Every conditional in the new widgets is the one `build()` already had, in the
same shape: no defaulted parameters, no `??` fallbacks, no convenience null
checks. That was deliberate — the earlier workout_screen pass showed a single
added `if (x == null) return` guard is enough to drop the 100% gate, because
it is a line no existing test reaches.

`_openSyncSettings` split the way `_finishWorkout` did: the navigation half is
setState-free and moved to the actions extension, the post-return progression
pull keeps the setState and stays on the class.

`bash ~/utils/scripts/check_file_length.sh --all` now exits 0. 402 tests pass
with a byte-identical name set, dart analyze clean, coverage 100%
(2765/2765).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EveB813BQ8abAP68VSqZ5Y
2026-08-15 22:36:23 +02:00
..
workout_app Split settings_screen.dart (503 -> 211) — the file-length gate now passes 2026-08-15 22:36:23 +02:00
design.md Make the phone's manual-workout budget agree with the PC, twice over 2026-08-09 17:34:46 +02:00
dfesign_v2.md Make the phone's manual-workout budget agree with the PC, twice over 2026-08-09 17:34:46 +02:00