AppBar не отображается в Flet
Использую flet, Хотел добавить AppBar, но он не отображается. При этом, если я убираю маршрутизацию, то он отображается. Я пробовал ставить его после views.clear(), менял настройки appbar, менял название, но это не помогло. В интернете про это ничего нет. flet 0.20.0
from flet import *
button_style = ButtonStyle(shape=RoundedRectangleBorder(radius=10), bgcolor='blue', color='white')
center = MainAxisAlignment.CENTER
class Api:
def login(self, login, password):
return 1
api = Api()
class Data:
data = {'do':'', 'data':{}, 'user_id':0, 'task_id':0, 'customer_id':0, 'store_id':0}
data = Data()
def main(page: Page):
page.title = 'NeoTelecom'
page.vertical_alignment = CrossAxisAlignment.START
page.horizontal_alignment = center
page.window_width = 400
page.window_height = 700
page.padding = 0
page.spacing = 0
page.appbar = AppBar(toolbar_height=100, leading=Icon(icons.ABC), bgcolor='blue') #<- не отображает appbar
def route_change(e: RouteChangeEvent):
page.views.clear()
if page.route == '/':
data.data['do'] = 'checkSign'
login = TextField(bgcolor='gray', max_lines=1, label='Логин', border_radius=10)
password = TextField(bgcolor='gray', password=True, max_lines=1, label='Пароль', border_radius=10)
data.data['data']['login'] = login.value
data.data['data']['password'] = password.value
page.views.append(
View(
route='/',
controls=[
Column(
[
Container(
Column(
[
Container(
Text(value='NeoTelecom', size=50, italic=True),
padding=padding.only(left=50, bottom=80)
),
Container(
Column(
[
login,
password
],
),
padding=padding.only(left=20, right=20)
),
Container(
ElevatedButton(text='Вход', scale=1.5, height=30, width=140, style=button_style, on_click=lambda _: page.go('/main')),
padding=padding.only(left=100, top=100)
),
]
),
)
],
spacing=30, alignment=alignment.top_center
)
]
)
)
if page.route == '/main':
if data.data['do'] == 'checkSign':
user_id = api.login(data.data['data']['login'], data.data['data']['password'])
if user_id == -1:
pass
else:
data.data['user_id'] = user_id
data.data['data'] = {}
page.show_snack_bar(
SnackBar(
Text(f'Успешный вход! ID: {user_id}')
)
)
page.views.append(
View(
route='/main',
controls=[
Column(
[
Column(
[
Container(
Text(value=' ', size=20, color='white'),
alignment=alignment.center, bgcolor='blue', width=450, height=70
)
],
spacing=10
),
Container(
Text(value='NeoTelecom', size=50, italic=True),
padding=padding.only(left=50, bottom=80)
),
],
spacing=30, alignment=alignment.top_center
)
]
)
)
page.on_route_change = route_change
page.go(page.route)
page.update()
app(target=main)
AppBar куда то пропал...
Ответы (1 шт):
Автор решения: Сергей Кох
→ Ссылка
Добавьте page.appbarв список controls на каждой странице, он и появиться.
Чтобы отобразить элемент управления на странице, добавьте его в controls список страницы и вызовите page.update() отправку изменений страницы в браузер или настольный клиент:
.................................
controls=[
page.appbar,
Column(
.................................
