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.5.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.5-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fletx-0.1.5.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.5.tar.gz
Algorithm Hash digest
SHA256 bde9132c299c4e9f00e2d986ed3ad1ce9780db04eefbf68dc026637d3d447787
MD5 b15118d109b2aed05c4144ded6175d57
BLAKE2b-256 788f8c11e3b1b864478050aa11a3ce1af4f3eb3b06c9520803d46fdd6605c9c5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fletx-0.1.5-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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3321c6b61d8b3f742b7a389293ea00933befbb335ab9a98a916131c59f57fa37
MD5 1fba4c863a51575d915d06657df3a747
BLAKE2b-256 3d755b6575e1a6abe99f1d022664e9242bb7f85e4d6a8c8bebc8751f9bafa6f3

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