I made a Simple App With Some Windows With Python And Flet,
I tried to add a page drawer (Side bar) and it’s not appears.
I would really appriciate if you’d answer the full code not just snippet.
Thank you For your time and help 🙂
import flet as ft
from flet import View, AppBar, ElevatedButton, Text, IconButton, icons, NavigationDrawer, Divider, Container
from flet import RouteChangeEvent, ViewPopEvent
def main(page: ft.Page) -> None:
page.title = 'Music App'
def show_drawer(e):
page.drawer.open = True
page.update()
page.drawer = NavigationDrawer(
controls=[
Container(height=12),
ft.NavigationDrawerDestination(
label="Home",
icon=ft.icons.DOOR_BACK_DOOR_OUTLINED,
selected_icon_content=ft.Icon(ft.icons.DOOR_BACK_DOOR),
),
Divider(thickness=2),
ft.NavigationDrawerDestination(
icon_content=ft.Icon(ft.icons.ACCOUNT_CIRCLE_OUTLINED),
label="Account",
selected_icon=ft.icons.ACCOUNT_CIRCLE_ROUNDED,
),
ft.NavigationDrawerDestination(
icon_content=ft.Icon(ft.icons.SETTINGS_OUTLINED),
label="Settings",
selected_icon=ft.icons.SETTINGS_ROUNDED,
),
]
)
def route_change(e: RouteChangeEvent) -> None:
page.views.clear()
main_view_controls = [
Text(value='Down To Jam', size=30),
Text(value='Recommended Songs', size=30),
ElevatedButton(text='Viva La Vida', on_click=lambda _: page.go('/VivaLaVida')),
ElevatedButton(text='הקנאה', on_click=lambda _: page.go('/Hakinhah')),
Text(value='Jam Rooms', size=30),
ElevatedButton(text='Room 1', on_click=lambda _: page.go('/JamRoomRoom1')),
ElevatedButton(text='Room 2', on_click=lambda _: page.go('/JamRoomRoom2')),
ElevatedButton(text='Room 3', on_click=lambda _: page.go('/JamRoomRoom3')),
ElevatedButton(text='Room 4', on_click=lambda _: page.go('/JamRoomRoom4')),
ElevatedButton(text='Room 5', on_click=lambda _: page.go('/JamRoomRoom5'))
]
page.views.append(
View(
route='/',
controls=main_view_controls,
spacing=26,
appbar=AppBar(
title=Text("Music App"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/VivaLaVida':
page.views.append(
View(
route='/VivaLaVida',
controls=[
Text(value='Viva La Vida', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("Viva La Vida"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/Hakinhah':
page.views.append(
View(
route='/Hakinhah',
controls=[
Text(value='הקנאה', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("הקנאה"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/JamRoomRoom1':
page.views.append(
View(
route='/JamRoomRoom1',
controls=[
Text(value='JamRoomRoom1', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("JamRoomRoom1"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/JamRoomRoom2':
page.views.append(
View(
route='/JamRoomRoom2',
controls=[
Text(value='JamRoomRoom2', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("JamRoomRoom2"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/JamRoomRoom3':
page.views.append(
View(
route='/JamRoomRoom3',
controls=[
Text(value='JamRoomRoom3', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("JamRoomRoom3"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/JamRoomRoom4':
page.views.append(
View(
route='/JamRoomRoom4',
controls=[
Text(value='JamRoomRoom4', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("JamRoomRoom4"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
if page.route == '/JamRoomRoom5':
page.views.append(
View(
route='/JamRoomRoom5',
controls=[
Text(value='JamRoomRoom5', size=30),
ElevatedButton(text='Back', on_click=lambda _: page.go('/'))
],
spacing=26,
appbar=AppBar(
title=Text("JamRoomRoom5"),
leading=IconButton(icon=icons.MENU, on_click=show_drawer)
)
)
)
page.update()
page.on_route_change = route_change
def view_pop(e: ViewPopEvent) -> None:
page.views.pop()
top_view: View = page.views[-1]
page.go(top_view.route)
page.on_view_pop = view_pop
page.go(page.route)
if __name__ == '__main__':
ft.app(target=main)
so that’s the code, the words in the unfammiliar language,
you can name them x/y if it will make you work better. as you wish.
thanks again
New contributor
Osher Reuvney is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.