Skip to main content

⚡Flet-Easy is a user-friendly add-on package for Flet, offering a cleaner code structure with numerous customizable features like JWT, routers, decorators, middleware and more.

Project description

🔥Flet-Easy

githubpypi

image image image socket uv linting - Ruff Linters Tests Downloads

logo

Flet-Easy is a comprehensive package built as an add-on for Flet. It provides a clean, intuitive API with advanced routing, authentication, middleware, page caching, and responsive design capabilities for building modern desktop, web, and mobile applications.

✨ Features (v0.3.0)

  • Page Caching System: Optional state preservation across navigation for seamless user experience. (Docs)
  • NavigationBar Integration: Built-in support for ft.NavigationBar with automatic routing. (Docs)
  • Enhanced Middleware: Class-based middleware with page-specific application support. (Docs)
  • Simple page routing (Various ways to add pages). (Docs)
  • Dynamic routing, customization in the routes for greater accuracy in sending data. (Docs)
  • Routing protection (Docs)
  • Custom Page 404 (Docs)
  • Controlled data sharing between pages. (Docs)
  • Asynchronous support.
  • JWT support for authentication sessions. (Docs)
  • Working with other applications. (Docs)
  • CLI to create app structure FletEasy (fs init). (Docs)
  • Easy integration of on_keyboard_event in each of the pages. (Docs)
  • Use the percentage of the page width and height of the page with on_resize. (Docs)
  • ResponsiveControlsy control to make the app responsive. (Docs)
  • Supports Application Packaging for its distribution. (view)

📌 Flet events it handles

  • on_route_change : Dynamic routing
  • on_view_pop
  • on_keyboard_event
  • on_resize
  • on_error

💻 Ways to install

Install Flet-Easy Complete

[!NOTE] If you use the fs cli, it is important to have git installed.

Installs all the dependencies to use, you can use all the functionalities provided by FletEasy

pip install flet-easy[all]

Install clean Flet-Easy

[!TIP] Recommended for Flet Packaging Application.

Requires installation of Flet >= 0.28.0.

pip install flet[all]

If you do not use: CLI-to-create-app

pip install flet-easy

Install FletEasy if you need to use Basic-JWT

pip install flet-easy[JWT]

💻 Update

pip install flet-easy[all] --upgrade

🔥 Flet-Easy app example

Here is an example showcasing the new NavigationBar layout and routing features:

import flet as ft
import flet_easy as fs

app = fs.FletEasy(route_init="/home")

# 1. Define a Global View
# This layout (AppBar, NavigationBar, etc.) will be shared across pages
@app.view
def main_view(data: fs.Datasy):
    return fs.Viewsy(
        appbar=ft.AppBar(
            title=ft.Text("My Flet-Easy App"),
            bgcolor=ft.Colors.BLUE,
        ),
        navigation_bar=ft.NavigationBar(
            destinations=[
                ft.NavigationBarDestination(icon=ft.Icons.HOME, label="Home"),
                ft.NavigationBarDestination(icon=ft.Icons.INFO, label="About"),
            ],
            on_change=data.go_navigation_bar, # Handles automatic routing via index
        ),
        bgcolor=ft.Colors.GREY_50,
    )

# 2. Create the Home Page
@app.page("/home", title="Home", index=0) # index=0 matches the first Nav interface
def home_page(data: fs.Datasy):
    data.view.appbar.title = ft.Text("Welcome Home! 🏠")

    return ft.View(
        controls=[
            ft.Text("Welcome to Flet-Easy! 🎉", size=30, weight=ft.FontWeight.BOLD),
            ft.Text("Now with page caching and NavigationBar support!", size=16),
            ft.ElevatedButton(
                "Go to About",
                on_click=lambda _: data.go_route("/about"), # Direct navigation
            ),
        ],
        appbar=data.view.appbar,
        navigation_bar=data.view.navigation_bar,
        vertical_alignment="center",
        horizontal_alignment="center",
    )

# 3. Create the About Page
@app.page("/about", title="About", index=1)
def about_page(data: fs.Datasy):
    data.view.appbar.title = ft.Text("About Flet-Easy")

    return ft.View(
        controls=[
            ft.Text("About Flet-Easy", size=24),
            ft.Text("Build amazing apps with Python and new caching features!"),
            ft.ElevatedButton("← Back Home", on_click=lambda _: data.go_back()),
        ],
        appbar=data.view.appbar,
        navigation_bar=data.view.navigation_bar,
        vertical_alignment="center",
        horizontal_alignment="center",
    )

# 4. Run the application
if __name__ == "__main__":
    app.run()

🎬 Demo

app example

🚀 How to use Flet-Easy?

[!IMPORTANT] 📑 Documentation: https://daxexs.github.io/flet-easy/

👀 Code examples

[!TIP] https://github.com/Daxexs/flet-easy/tree/main/tests

🔎 Contribute to this project

Read the CONTRIBUTING.md file

🧾 License

Apache License 2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flet_easy-0.3.0.dev21.tar.gz (13.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flet_easy-0.3.0.dev21-py3-none-any.whl (39.1 kB view details)

Uploaded Python 3

File details

Details for the file flet_easy-0.3.0.dev21.tar.gz.

File metadata

  • Download URL: flet_easy-0.3.0.dev21.tar.gz
  • Upload date:
  • Size: 13.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for flet_easy-0.3.0.dev21.tar.gz
Algorithm Hash digest
SHA256 03d8c3542f4fdc68a29325431bbcd021b5b977b86e25a792888016ab7c802f37
MD5 880739e47304789fc7f5ce726fed633b
BLAKE2b-256 b2849bfbf2eb55e9a6d6883b83f00f551eaec02c04d4f30a4e86c93175cef3d7

See more details on using hashes here.

File details

Details for the file flet_easy-0.3.0.dev21-py3-none-any.whl.

File metadata

  • Download URL: flet_easy-0.3.0.dev21-py3-none-any.whl
  • Upload date:
  • Size: 39.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for flet_easy-0.3.0.dev21-py3-none-any.whl
Algorithm Hash digest
SHA256 e2bf13f310762bf9aa152c32dcab9f1ce6bfa0ca647cf797eb1c209d09d3e885
MD5 4010f1e0ae4892cdf8db5d09b136b6c8
BLAKE2b-256 5747dfdb4c1f5055f99f2bfb0fe3fe301ab726223cc49036c4a7130fd93de925

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page