Почему во flet при добавлении page.open вся страница удаляется
Пишу программу на flet
. Добавил BottomSheet
, который вылезает через page.open
при определенных условиях при каждом обновлении страницы. Когда я его добавил, страница очистилась и ничего не было. Когда убрал page.clean
, все заработало, но при смене страницы прошлая не удалилась и они наложились друг на друга. Почему я не могу использовать две эти функции вместе?
Код: (сокращеный)
import flet as ft
#другие импорты
#база данных и т.д. и т.п.
def main(page: ft.Page):
#тут стоит настройка страницы (ширина\длина\цвет)
#тут стоят функции разные
def check_stake():
stake_data = db.get_stake()
return funcs.convert_iso(stake_data[1]) <= funcs.convert_iso(funcs.get_time())
def route_change(e):
page.clean() #вот тут чищу страницу
def go_stake(e):
page.go('/stake')
if check_stake():
stake_data = db.get_stake()
page.open(views.stake_sheet(funcs.count_stake(stake_data[0]), stake_data[1], go_stake)) #тут открывают sheet и все ломается
if page.route == '/':
#тут всякие функции и page.add, короче views
#...
#много кода страниц
#...
page.on_route_change = route_change
page.go(page.route)
page.update()
ft.app(main)
Код BottomSheet
(views.stake_sheet)
def stake_sheet(stake_before, stake_after, go_stake):
return ft.BottomSheet(
ft.Column(
[
ft.Text(f'Вы успешно застейкали -1 монет и получили -2 монет!'),
ft.ElevatedButton(
'Собрать монеты',
bgcolor='#0089d4',
color='white',
on_click=go_stake,
style=ft.ButtonStyle(
shape=ft.RoundedRectangleBorder(radius=10)
)
)
]
)
)
page.clean
+ page.open
page.open
(вроде все норм, но все виджеты страниц уходят под область видимости и видно только первую страницу
page.clean
(BottomSheet тупо нету ._.)
даже не спрашивайте, зачем мне кошелек
Ответы (1 шт):
Не надо чтоб BottomSheet
вылезал через page.open()
.
Когда page.clean()
внутри функции route_change()
вы очищаете страницу,
включая BottomSheet
, который вы добавляете с помощью page.open()
.
Поэтому BottomSheet
не отображается после очистки страницы.
Надо открываете его при необходимости внутри функции route_change()
.