[Python] flet NavigationDrawer control does not close programmatically when opened with View()

Discussão em 'Python' iniciado por Stack, Março 30, 2025.

  1. Stack

    Stack Membro Participativo

    Using flet library in python, I am trying to close a NavigationDrawer control programmatically using a button. The NavigationDrawer is added to the page using a View(), and I want to close the navbar when calling close_drawer() function. I have attached code snippet below, but it does not close the navigation drawer. Please help:

    from flet import AppBar, ElevatedButton, NavigationDrawer, Text, View, app, Page


    def main():
    app(apprun)

    def apprun(page: Page):
    def on_route_change(_):
    page.views.clear()
    page.views.append(
    View(
    route="/",
    controls=[
    AppBar(title=Text("Navbar example"))
    ]
    ))
    page.views[0].drawer = nav
    page.update()
    def close_drawer(_):
    if page.views[0].drawer is not None:
    nav.open = False
    page.views[0].drawer.open = False
    page.close(nav)
    page.close(page.views[0].drawer)
    page.update()
    nav = NavigationDrawer(
    controls=[
    ElevatedButton(text="close this navbar", on_click=close_drawer)
    ])
    page.on_route_change = on_route_change
    page.go(page.route)


    if __name__ == "__main__":
    main()

    Continue reading...

Compartilhe esta Página