MCPcopy
hub / github.com/flet-dev/flet / TodoAppState

Class TodoAppState

sdk/python/examples/apps/declarative/todo/main.py:31–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

29@ft.observable
30@dataclass
31class TodoAppState:
32 tasks: list[TaskItem] = field(default_factory=list)
33 statuses: list[str] = field(default_factory=lambda: ["all", "active", "completed"])
34 status: str = "all"
35
36 def get_tasks(self) -> list[TaskItem]:
37 return list(
38 filter(
39 lambda task: (
40 self.status == "all"
41 or self.status == "active"
42 and not task.completed
43 or self.status == "completed"
44 and task.completed
45 ),
46 self.tasks,
47 )
48 )
49
50 @property
51 def active_tasks_number(self) -> int:
52 return len([task for task in self.tasks if not task.completed])
53
54 def status_changed(self, e: ft.Event[ft.Tabs]):
55 self.status = self.statuses[e.control.selected_index]
56
57 def on_task_status_changed(self):
58 cast(ft.Observable, self).notify()
59
60 def add_task(self, new_task_event: str):
61 self.tasks.append(
62 TaskItem(new_task_event, on_status_changed=self.on_task_status_changed)
63 )
64
65 def delete_task(self, task: TaskItem):
66 self.tasks.remove(task)
67
68 def clear_completed(self):
69 self.tasks = list(filter(lambda task: not task.completed, self.tasks))
70
71
72@ft.component

Callers 1

TodoAppViewFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected