push web
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import flet as ft
|
||||
from view import resolve_view, PUBLIC_ROUTES, PROTECTED_PREFIXES
|
||||
import theme_manager as tm
|
||||
|
||||
|
||||
async def _redirect_to_login(page: ft.Page):
|
||||
@@ -42,6 +43,10 @@ async def _handle_route_change(page: ft.Page, e: ft.RouteChangeEvent):
|
||||
|
||||
views = resolve_view(page, route)
|
||||
|
||||
# Применяем сохранённые настройки пользователя перед построением виджетов
|
||||
tm.apply_scale(page)
|
||||
tm.apply_theme(page)
|
||||
|
||||
# Неизвестный маршрут → на страницу пользователя
|
||||
if views is None:
|
||||
await page.push_route(f"/user/{url_key}")
|
||||
@@ -62,4 +67,17 @@ def setup_router(page: ft.Page):
|
||||
async def _on_route_change(e: ft.RouteChangeEvent):
|
||||
await _handle_route_change(page, e)
|
||||
|
||||
def _on_resize(e):
|
||||
"""Пересчитать масштаб при изменении размера окна/повороте телефона,
|
||||
но только если пользователь не менял его вручную (нет сохранён. префа)."""
|
||||
uid = tm._get_uid(page)
|
||||
if uid not in tm._user_prefs:
|
||||
new_scale = tm.auto_scale(page)
|
||||
if abs(new_scale - (page.session.store.get("ds_scale_last") or 0)) > 0.05:
|
||||
page.session.store.set("ds_scale_last", new_scale)
|
||||
tm.apply_scale(page, new_scale)
|
||||
# перезагрузим текущий маршрут чтобы виджеты пересоздались
|
||||
page.go(page.route)
|
||||
|
||||
page.on_route_change = _on_route_change
|
||||
page.on_resize = _on_resize
|
||||
|
||||
Reference in New Issue
Block a user