Through decorators¶
Add pages from other files to the main application¶
In order to create a page in a file.py different from the main.py file of the app, you need to use the AddPagesy class.
AddPagesy¶
Requires the parameter:
route_prefix: text string that will bind to the url of the page decorator, example(/users) this will encompass all urls of this class. (optional)
Methods:
page(): Decorator to add a new page to the app. This decorator method acts similarly to thePagesyclass and contains the same required parameters. (See more)
Soporta async
App structure¶

Urls to be created:
'/user/task''/user/information''/user/test'
Example using functions¶
import flet_easy as fs
import flet as ft
users = fs.AddPagesy(
route_prefix='/user'
)
# -> Urls to be created:
# * '/user/task'
# * '/user/information'
# * '/user/test'
@users.page('/task', title='Task')
def task_page(data: fs.Datasy):
return ft.View(
controls=[
ft.Text('Task'),
ft.FilledButton(
"Go Information",
on_click=data.go("/users/information"),
),
],
vertical_alignment="center",
horizontal_alignment="center"
)
@users.page('/information', title='Information')
async def information_page(data: fs.Datasy):
return ft.View(
controls=[
ft.Text('Information'),
ft.FilledButton(
"Go Test",
on_click=data.go("/users/test"),
),
],
vertical_alignment="center",
horizontal_alignment="center"
)
Example using classes¶
Available since version 0.2.4
Create new pages (View) by using classes, you don't need to inherit from any other class to add the page, you just need to:
- Use the
pagedecorator. - The constructor must have as mandatory parameter
data:fs.Datasyand if it receives a parameter bymeans of the url it must be used as parameter. - That the class to use must have a mandatory method called
buildthat will returnViewfrom flet, itcan be async if necessary. Thisbuildmethod does not receive any parameter.
🤔 why use a class?
The class can have several benefits, such as inheritance which is useful to avoid repeating code, among others.
👀 Continuing with the previous code..
@users.page('/test', title='test')
Class TestPage:
def __init__(self, data:ft.Datasy):
self.data = data
async def build(self):
return ft.View(
controls=[
ft.Text('Test'),
ft.FilledButton(
"Go Task",
on_click=self.data.go("/users/task"),
),
],
vertical_alignment="center",
horizontal_alignment="center"
)
Adding pages¶
Now how to add to the main app the main.py file. For this we use the add_pages method that requires as parameter a list of all the pages of other files that we want to add.
import flet_easy as fs
from views.user import users
app = fs.FletEasy(
route_init='/user/task',
)
app.add_pages([users])
app.run()
without instantiating AddPagesy¶
Available since version 0.2.7
Add page without creating an instance of AddPagesy class. For this the @fs.page() decorator is used, Useful if you don't need to share part of the URLs between pages
Example¶

It is important to set path_views for it to work properly
import flet_easy as fs
from pathlib import Path
app = fs.FletEasy(
route_init="/test",
path_views=Path(__file__).parent / "views",
)
app.run()
viewsfolder file