MCPcopy Create free account
hub / github.com/Bbalduzz/fletmint / Toggle

Class Toggle

fletmint/toggle.py:39–90  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37
38
39class Toggle(ft.Switch):
40 def __init__(
41 self, on_change, value=True, label="toggle", theme=ft.ThemeMode.DARK, **kwargs
42 ):
43 super().__init__(**kwargs)
44 self.label = label
45 self.on_change = on_change
46 self.value = value
47 self.theme = theme
48 self.apply_theme()
49
50 def init_ui(self):
51 self.label = f" {self.label}"
52 self.label_style = ft.TextStyle(color=self.colors.label_text_color, size=15)
53 self.value = self.value
54 self.track_outline_color = {
55 ft.MaterialState.DEFAULT: self.colors.default_outline_color,
56 ft.MaterialState.SELECTED: self.colors.selected_outline_color,
57 }
58 self.thumb_color = {
59 ft.MaterialState.DEFAULT: self.colors.default_thumb_color,
60 ft.MaterialState.SELECTED: self.colors.selected_thumb_color,
61 }
62
63 self.track_color = {
64 ft.MaterialState.DEFAULT: self.colors.default_track_color,
65 ft.MaterialState.SELECTED: self.colors.selected_track_color,
66 }
67 self.overlay_color = ft.colors.with_opacity(0, "white")
68 self.on_change = self.on_change
69
70 def apply_theme(self):
71 self.colors = (
72 ToggleColors.dark()
73 if self.theme == ft.ThemeMode.DARK
74 else ToggleColors.light()
75 )
76 self.change_theme(self.colors)
77 self.init_ui()
78
79 def change_theme(self, colors=None):
80 # Dynamically update attributes based on what is available in ToggleColors
81 for attr in vars(colors):
82 if hasattr(self, attr):
83 setattr(self, attr, getattr(colors, attr))
84
85 def toggle_theme(self):
86 self.theme = (
87 ft.ThemeMode.LIGHT if self.theme == ft.ThemeMode.DARK else ft.ThemeMode.DARK
88 )
89 self.apply_theme()
90 self.update()

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected