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
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!
- ⭐ Star the FletX repository
- Report issues or suggest improvements in the Issues section
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fletx-0.1.8.tar.gz.
File metadata
- Download URL: fletx-0.1.8.tar.gz
- Upload date:
- Size: 7.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1aa69118cc0337f84a018add17accecc7340c143d14fe27254dc33f565d85ea1
|
|
| MD5 |
0cc802478446406934e3fe44f3c6b60d
|
|
| BLAKE2b-256 |
42a900cf05e51d8a364a8a0dc918c317366dfd8fc660e1c192cc591c38226d1c
|
File details
Details for the file fletx-0.1.8-py3-none-any.whl.
File metadata
- Download URL: fletx-0.1.8-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
244a9d866775e5830a1f751d1726c4b5480866ded9b60fc7a0270e1d055e0eef
|
|
| MD5 |
7b4d6b94ac2a8a0593234f28e510fe25
|
|
| BLAKE2b-256 |
f8017677c720680de99038773cb979fc17b6efe73ed8a0be6f726f5e1df28312
|