|
Some checks failed
Security / Security check (push) Failing after 1s
The earlier "single AnimationController for width + opacity"
commit (0.51.5) made the *visual* expand smooth but the
underlying layout still jumped because the rows themselves
changed height between states:
collapsed expanded
───────── ─────────
triangle (36 px) triangle + 2-line title (44 px)
dot (10 px) dot + multi-line pill with
optional "Start hub" button
(60-80 px when disconnected)
letter (16 px) letter + accented chip (28 px)
So everything BELOW the header — destinations list, footer —
slid down ~50 px every time the rail opened. That's the
"Versatz" Stefan kept seeing. Fading the labels in didn't
help; the row geometry was the wrong source of truth.
Structural fix: every header row is now a SizedBox with a
fixed pixel height. Collapsed-state and expanded-state
content both fit inside the same height:
_brandRowH = 48 // FaiDeltaMark (36 px) centered
_connRowH = 44 // single conceptual block, two single-
// line texts, no multi-line pill
_channelRowH = 28 // chip + single-line channel name
_rowGap = 8
The total header block is therefore a constant pixel sum.
Items below it (the destinations ListView, the footer) sit
at the same Y in both states by construction — not by lucky
math, not by animation tricks. The width animation only
moves the rail's RIGHT edge; the left + top + bottom edges
of every row are immovable.
To make the connection row fit in 44 px we drop the inline
"Start hub" tonal button. The same affordance is preserved
by making the whole row tap-handled when the daemon is
unreachable: tap the red dot (or anywhere on the row) to
fire `fai daemon start`. The tooltip is updated to spell
this out ("Disconnected · tap to start · …").
The channel row is now ALWAYS reserved (28 px placeholder
when no channel is active) so that flipping the operator
config from local→dev at runtime doesn't shift the
destinations list either. The placeholder is invisible.
Side-effects:
- _ConnectionPill is removed (nothing references it).
- New _BrandLabel + _ConnectionLabel widgets, both
trivially Column(MainAxisAlignment.center, …) so their
content sits visually centered inside the fixed row.
Version 0.51.6 → 0.51.7.
Signed-off-by: flemming-it <stefan.a.flemming@googlemail.com>
|
||
|---|---|---|
| .. | ||
| data | ||
| l10n | ||
| pages | ||
| theme | ||
| widgets | ||
| main.dart | ||