diet-guard/app/lib/screens
Krzysztof kuhy Rudnicki c897279c8b fix: clear every macro field before a prefill, add the phone's delivery button
`fillControllersFromDish` set the dish's name, four macros and `grams` but
left `perGrams` untouched. A `100` left there by an earlier food-bank pick
made `nutritionForPortion` read the dish's per-portion macros as per-100g and
rescale them: one real entry on 2026-08-23 logged 472 kcal as 1217.8 (258/100).

The PC never had this -- `_gatelock_delivery.py` calls `_clear_inputs()` first
-- so the fix is that same discipline, as one `MacroControllers.clear()` call
rather than a `perGrams.clear()` line a seventh field could forget. `fillFrom`
now clears too, and `edit_entry_screen` routes through it instead of six
hand-written assignments; its `initState` fill had the same shape.

The old tests asserted controller *text* and passed throughout the bug, so the
new ones assert the computed `Nutrition` -- verified failing (400 -> 1200.0)
before the fix. `clear()` gets an enumerated test so a new field fails until
it is cleared too.

Also adds the log screen's "Today's delivery" button, matching the PC lock
screen's affordance: explicit taps are unguarded per the Triggers table, still
skip dishes already logged, and show the queue count. The whole action row
moved to its own widget, which put `log_meal_screen.dart` back under the cap.
The label is a FittedBox in an Expanded -- measured, since a Row clips an
oversized label without ever throwing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QQpCiPaSbyRpwsLkH3dgsX
2026-08-23 09:34:47 +02:00
..
calendar_screen.dart Drop five redundant unawaited() wrappers around Navigator.push 2026-08-14 16:17:18 +02:00
edit_entry_screen.dart fix: clear every macro field before a prefill, add the phone's delivery button 2026-08-23 09:34:47 +02:00
food_bank_screen.dart Split food_bank_screen; share the filter widgets with history 2026-08-15 19:43:08 +02:00
github_client_id_dialog.dart Split the last four Dart lib files; file-length gate now reports zero 2026-08-15 21:07:24 +02:00
github_mirror_actions.dart Split the last four Dart lib files; file-length gate now reports zero 2026-08-15 21:07:24 +02:00
github_mirror_screen.dart Split the last four Dart lib files; file-length gate now reports zero 2026-08-15 21:07:24 +02:00
history_screen.dart Split history_screen and its test into widget siblings 2026-08-15 19:35:19 +02:00
log_meal_actions.dart feat: offer delivered dishes to the log form, one tap each 2026-08-23 09:07:17 +02:00
log_meal_kuchnia_mixin.dart fix: clear every macro field before a prefill, add the phone's delivery button 2026-08-23 09:34:47 +02:00
log_meal_nav_mixin.dart Rebuild the slot row when settings changes the schedule 2026-08-16 15:12:57 +02:00
log_meal_progress.dart Pin meal pills to one row; drop the "Logged" restatement 2026-08-16 14:18:39 +02:00
log_meal_screen.dart fix: clear every macro field before a prefill, add the phone's delivery button 2026-08-23 09:34:47 +02:00
log_meal_sync_mixin.dart Rebuild the slot row when settings changes the schedule 2026-08-16 15:12:57 +02:00
settings_kcal_goal.dart Split the last four Dart lib files; file-length gate now reports zero 2026-08-15 21:07:24 +02:00
settings_kuchnia.dart feat: add the catering login to settings, with an Android-only fetch 2026-08-23 08:33:52 +02:00
settings_meal_schedule.dart Let the phone set the eating window and meal count 2026-08-16 14:56:12 +02:00
settings_screen.dart feat: add the catering login to settings, with an Android-only fetch 2026-08-23 08:33:52 +02:00