feat(ui): on a phone, the floating button sits just above the navigation bar, its screen's fade under it

Each tab's screen paints the bar's fade beneath its own button
(FrameFade as its bottomNavigationBar, extendBody), so the button stands
16 pixels above the bar, as Material's, instead of above the fade; the
frame keeps its own fade for screens without one, and gets it back while
a page is pushed over the screen.

Whats-New: On a phone, the + button now sits just above the navigation bar.
Whats-New-De: Auf dem Handy sitzt der +-Knopf jetzt direkt über der Navigationsleiste.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-11-10 00:18:44 +01:00
commit c5eceda383
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -63,16 +63,7 @@ class const TabScreen({
// back as they scroll up, as Learn's (the developer's review, 7 Nov
// 2026).
child: ScrollHidingFab(
fab: switch (floatingActionButton) {
// Clear of the navigation bar and its fade at the foot on a phone.
final button? when !choosing => Padding(
padding: EdgeInsets.only(
bottom: FlushNavigationBar.buttonLiftOf(context),
),
child: button,
),
_ => null,
},
fab: choosing ? null : floatingActionButton,
builder: (context, fab) => Scaffold(
backgroundColor: Colors.transparent,
// Quick add's bar and the keyboard float over the tasks, which
@ -118,9 +109,15 @@ class const TabScreen({
],
),
body: body,
// On a phone the button stands over the fade above the
// navigation bar, which the screen paints beneath it, the tasks
// running on beneath both (the developer's review, 9 Nov 2026);
// while tasks are chosen, the bar of what to do with them.
extendBody: !choosing,
bottomNavigationBar: choosing
? TaskSelectionBar(selection: selection)
: null,
: const FrameFade(),
floatingActionButtonLocation: FrameFade.buttonLocation(context),
floatingActionButton: fab,
),
),