我用的是flet,想添加AppBar,但是不显示。同时,如果我删除路由,它也会显示。我尝试将其放在views.clear()之后,更改appbar设置,更改名称,但没有帮助。互联网上没有任何关于此的信息。平 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 已经消失在某处...
将其添加
page.appbar
到每个页面的列表controls
中,它将出现。关联