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.1.tar.gz (4.7 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.1-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fletx-0.1.1.tar.gz
  • Upload date:
  • Size: 4.7 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.1.tar.gz
Algorithm Hash digest
SHA256 83aff047bee7f08508b5f48c801b5b11fd9142185627901f2d352c21f5d359b5
MD5 e24c084712ffefd62d265fcb35a4e635
BLAKE2b-256 fa6ed620b42ae06da573cb978547cb99dbe7b5d824348263f8b2df7c4872922e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fletx-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.8 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5c2bf3c5429e18adc6b46c96d901b24e06fc2477a687e5a87965f79084f5da33
MD5 a9b8a65805a10e18b01c22774946d7a1
BLAKE2b-256 2df693194f8e2d9d1da8aaf206a2fae8820c651f3d1e75d8634a4d19fee04ea4

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