admin管理员组

文章数量:1355107

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()

本文标签: pythonflet NavigationDrawer control does not close programmatically when opened with View()Stack Overflow