Skip to main content

FletX is a powerful routing and state management library for the Flet framework. It simplifies application development by separating UI and logic while providing intuitive navigation solutions.

Project description

FletX

License
Platform
Version
Downloads

FletX is a powerful routing and global state management library for the Flet framework. It simplifies application development by separating UI and logic while providing intuitive navigation solutions.


✨ Features

  • Seamless Routing: Effortless and dynamic navigation management.
  • State Management: Manage complex states with ease.
  • Logic-UI Separation: Keep your code clean and maintainable.
  • Lightweight and Fast: Designed for performance.

📦 Installation

Add the FletX package to your project:

pip install fletx

🚀 Getting Started

🌟 Statefull Counter App Example

Directory & File Structure

📦CounterApp
    ├── main.py
    ├── states
       └── main_state.py
    └── views
        ├── counter_view.py
        └── home_view.py

main.py

import flet as ft
from fletx import Xapp,route
from states.main_state import MainState
from views.home_view import HomeView
from views.counter_view import CounterView

def main(page: ft.Page):
    page.title = "FletX counter example"

    Xapp(
        page=page,
        init_route="/",
        state=MainState,
        routes=[
            route(route="/",view=HomeView),
            route(route="/counter",view=CounterView),
        ]
    )

ft.app(main)

states/main_state.py

import flet as ft
from fletx import Xstate

class MainState(Xstate):
    def __init__(self, page):
        super().__init__(page)
        
        self.txt_number = ft.TextField(value="0", text_align=ft.TextAlign.RIGHT, width=100)

    def minus_click(self,e):
        self.txt_number.value = str(int(self.txt_number.value) - 1)
        self.update()

    def plus_click(self,e):
        self.txt_number.value = str(int(self.txt_number.value) + 1)
        self.update()

views/home_view.py

import flet as ft 
from fletx import Xview

class HomeView(Xview):

    def build(self):
        return ft.View(
            horizontal_alignment=ft.CrossAxisAlignment.CENTER,
            vertical_alignment=ft.MainAxisAlignment.CENTER,
            controls=[
                ft.Text("Home View"),
                ft.Text(f"Counts = {self.state.txt_number.value}"),
                ft.ElevatedButton("Go Counter View",on_click=lambda e:self.go("/counter"))
            ]
        )

views/counter_view.py

import flet as ft 
from fletx import Xview

class CounterView(Xview):

    def build(self):
        return ft.View(
            horizontal_alignment=ft.CrossAxisAlignment.CENTER,
            vertical_alignment=ft.MainAxisAlignment.CENTER,
            controls=[
                ft.Row(
                    [
                        ft.IconButton(ft.Icons.REMOVE, on_click=self.state.minus_click),
                        self.state.txt_number,
                        ft.IconButton(ft.Icons.ADD, on_click=self.state.plus_click),
                    ],
                    alignment=ft.MainAxisAlignment.CENTER,
                ),
                ft.ElevatedButton("<< Back",on_click=self.back)
            ]
        )

❤️ Feedback

Found this repository helpful? Let us know!

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

fletx-0.1.3.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

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

fletx-0.1.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file fletx-0.1.3.tar.gz.

File metadata

  • Download URL: fletx-0.1.3.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for fletx-0.1.3.tar.gz
Algorithm Hash digest
SHA256 04f5bdc0cc444ba1a29cc93af47b78a0e7f5e557e943b3a2845760549237eae9
MD5 5378cee324c1693d7810ead86885c500
BLAKE2b-256 512cbe54f19c2460277b6d11390d73143f4d3e3b436eca0720f2a9c773d30f0f

See more details on using hashes here.

File details

Details for the file fletx-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: fletx-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.7

File hashes

Hashes for fletx-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 02c4ab1b5afdd006464278121e42c7e662ceafc3124fbdd7e6e3117c7927e9b8
MD5 0f2e4f363e93fcbb859641b8e41f2d2a
BLAKE2b-256 31c5e872ba3991245bdd359a89e0556bcb7bd37a0f79ffd398f6f041884e1244

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