bug: `BottomAppBar` custom margins break `NotchShape` calculation due to coordinate offsets
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
Direzione di ricerca
Start by tracing the Python BottomAppBar and notch shape bindings into the Flutter handler that calculates the notch path; the issue names no source files or tests. Reproduce the supplied example and inspect how custom margins affect the guest rectangle and cutout coordinates. Done means the notch stays aligned with the floating action button when the bar has custom margins, with offset adjustment available through the bindings.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Duplicate Check
- I have searched the opened issues and there are no duplicates
Describe the bug
When configuring a BottomAppBar with custom spatial styling (such as adjusting outer margins/paddings or wrapping its internal contents inside a padded container to make a modern "floating capsule" navigation bar), the underlying Flutter NotchShape engine fails to align the cutout coordinates properly.
Because Flet relies entirely on fixed enum declarations (ft.NotchShape.CIRCULAR_RECTANGLE) or rigid configuration wrappers (ft.AutomaticNotchShape), python developers have no mechanism to pass custom math offsets (such as adjusting dxOffset or dyOffset) or shifting guest coordinate bounds inside the shape path calculation. As a result, adding margins to the bar permanently misaligns or deletes the cutout relative to a docked FloatingActionButton's position.
Code sample
Code
import flet as ft
def main(page: ft.Page) -> None:
page.title = "Notch Shape Example"
page.bottom_appbar = ft.BottomAppBar(
content=ft.Row(
controls=[
ft.IconButton(ft.Icons.HOME, icon_color="#006A6A", icon_size=32),
ft.IconButton(
ft.Icons.ACCOUNT_BOX,
icon_color="#006A6A",
icon_size=32,
),
],
alignment=ft.MainAxisAlignment.SPACE_BETWEEN,
),
bgcolor=ft.Colors.WHITE,
border_radius=42,
shape=ft.CircularRectangleNotchShape(),
# To make the bottom bar flay in the bottom of the screen
margin=ft.Margin.only(left=40, right=40, bottom=28),
padding=ft.Padding.only(left=14, right=14, top=10),
height=70,
# notch_margin=20
)
page.floating_action_button = ft.FloatingActionButton(
icon=ft.Icons.ADD,
shape=ft.CircleBorder(),
bgcolor="#006A6A",
on_click=lambda _: print("Floating"),
elevation=3,
)
page.floating_action_button_location = ft.FloatingActionButtonLocation.CENTER_DOCKED
page.add(ft.SafeArea(content=ft.Column(controls=[ft.Container(expand=True)])))
if __name__ == "__main__":
ft.run(main)
To reproduce
- Execute the provided Flet mini-example code sample.
Expected behavior
Developers should be able to cleanly handle notches on floating navigation elements. There should be a built-in mechanism inside Flet's NotchShape
or AutomaticNotchShape bindings to specify raw alignment translation offsets (e.g., properties like dx_offset and dy_offset), allowing the framework to execute a coordinate shift on the guest rect bounds (guest.shift(Offset(dx, dy))) before committing to the layout path generation.
Screenshots / Videos
Captures
Operating System
Linux
Operating system details
Ubuntu 24 and Android 16
Flet version
1.0.4
Regression
I'm not sure / I don't know
Suggestions
Expose offset adjustment arguments within Flet's notch configuration bindings. Under the hood in the Flutter engine wrapper, these values should translate to shifting the layout rect math properties before calculating the shape path:
// Suggestion for Flutter side handler logic:
final Rect adjustedGuest = guest.shift(Offset(dxOffset, dyOffset));
Logs
Logs
[Paste your logs here]
Additional details
No response
- Lingua principale
- Python
- Stelle
- 17.4k
- Fork
- 728
- Merge medio
- 1g 10h
- PR unite (30g)
- 55
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di flet-dev/flet
-
feature: python 3.15 supportApertafeature request
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 2 giorni
-
bug: issue with flet run --web on Raspberry Pi running Raspberry Pi OS Lite (Debian 13 Trixie)Apertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
flet-dev/flet#6984 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
flet build: common [tool.flet.deep_linking] is ignored on Android and iOSForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug packaging platform: mobile
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di flet-dev/flet
Issue simili
-
comp/tools P2 type/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#142908 · 1 commento ·
-
[oblt-aw][autodoc] Fix malformed headings in new Buildkite docs pagesForse già presa @github-actions l’ha presa oggi. Apertadocumentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
[Bug]: fileUploadMatrix.test.ts URL case does a real DNS lookup and fails offlineForse già presa @r2jaff l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
ComposioHQ/composio#5054 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
pytorch/tensordict#3286 ·
I maintainer di solito rispondono entro 1 giorno