- TopNavBar: Nominatim geocoding search field plus Home (center on first
waypoint) and Fit (zoom to mission bounds) buttons (HTML prototype:
#searchWrap/#homeBtn/#fitBtn). Both show a SnackBar instead of doing
nothing when there are no waypoints yet.
- Renders as its own bar just below TopModeBar rather than fused into the
same pill: TopModeBar lives in AppShell, a layer above PlanScreen, which
owns the MapController these actions actually need. Fusing them would
need lifting the MapController to shared state - reasonable follow-up
if pixel-fidelity with the prototype's single bar matters later, but
not necessary for the functionality itself.
- Replaced SimpleAttributionWidget with a compact custom attribution: OSM's
tile usage policy requires visible attribution to stay, so instead of
removing it (as first asked) I shrank it and dropped the "flutter_map |"
prefix per the user's follow-up choice, so it reads cleanly against the
now-opaque bottom bar instead of looking like a second banner.
Added 5 tests (nav bar renders, home/fit SnackBars with no waypoints,
empty search is a no-op). All 26 tests and flutter analyze pass. Verified
on the Pixel_10a emulator: searched "Berlin" and confirmed the map flew
there, dropped a waypoint, panned far away, and confirmed Home re-centers
and snaps onto it exactly.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>