0
import flet as ft

def main(page: ft.Page):
    page.title = "Routes Example"

    def route_change(route):
        page.views.clear()
        page.views.append(
            View(
                "/",
                [
                    ft.AppBar(title=ft.Text("Flet app"), bgcolor=ft.colors.SURFACE_VARIANT),
                    ft.ElevatedButton("Visit Store", on_click=lambda _: page.go("/store")),
                ],
            )
        )
        if page.route == "/store":
            page.views.append(# some code here )
        page.update()

    def view_pop(view):
        page.views.pop()
        top_view = page.views[-1]
        page.go(top_view.route)

    page.on_route_change = route_change
    page.on_view_pop = view_pop
    page.go(page.route)


ft.app(target=main, view=ft.WEB_BROWSER)

The code block above is from flet documentation

What I noticed:

When I pressed back in AppBar The page.go() method in view_pop() calls route_change() within page.views is cleared then filled,

What I tried:

Instead of calling route_change() I will just pop the last element from page.views , update page.update() and change the route by page.route = "/".

What I expected from this try:

I expected that when I pressed back in AppBar and pressing the ElevatedButton visit_store, the app will work but it did not and even it did not give me any feedback.

This is my final code block.

import flet as ft

def main(page: ft.Page):
    page.title = "Routes Example"

    def route_change(route):
        if page.route == "/":
            page.views.clear()
            page.views.append(
                View(... # main view "/")
            )
        if page.route == "/store":
            page.views.append(
                View( ... # store view)
            )
        page.update()

    def view_pop(view):
        page.views.pop()   # pop the last object of page.views
        page.update()      # updating the page
        page.route = "/"   # changing the current route to "/" because now I'm in the first view with route of "/"

# the rest of code  

Khabir
  • 16
  • 3

0 Answers0