flet 0.70.0.dev6348__py3-none-any.whl → 0.70.0.dev6370__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of flet might be problematic. Click here for more details.
- flet/__init__.py +2 -0
- flet/controls/base_control.py +13 -10
- flet/controls/base_page.py +10 -2
- flet/controls/border.py +1 -1
- flet/controls/box.py +18 -16
- flet/controls/colors.py +5 -4
- flet/controls/context.py +1 -1
- flet/controls/control_event.py +2 -1
- flet/controls/core/dismissible.py +1 -5
- flet/controls/core/interactive_viewer.py +10 -23
- flet/controls/core/responsive_row.py +1 -2
- flet/controls/core/row.py +1 -2
- flet/controls/core/view.py +2 -4
- flet/controls/core/window.py +12 -8
- flet/controls/cupertino/cupertino_colors.py +8 -6
- flet/controls/material/app_bar.py +5 -6
- flet/controls/material/chip.py +4 -11
- flet/controls/material/circle_avatar.py +5 -6
- flet/controls/material/dropdown.py +11 -5
- flet/controls/material/dropdownm2.py +4 -5
- flet/controls/material/expansion_panel.py +19 -15
- flet/controls/material/menu_bar.py +7 -5
- flet/controls/material/snack_bar.py +1 -4
- flet/controls/material/tabs.py +7 -12
- flet/controls/page.py +48 -1
- flet/controls/services/shared_preferences.py +2 -1
- flet/controls/types.py +29 -3
- flet/pubsub/pubsub_hub.py +2 -1
- flet/testing/flet_test_app.py +11 -6
- flet/utils/pip.py +19 -14
- flet/version.py +1 -1
- {flet-0.70.0.dev6348.dist-info → flet-0.70.0.dev6370.dist-info}/METADATA +1 -1
- {flet-0.70.0.dev6348.dist-info → flet-0.70.0.dev6370.dist-info}/RECORD +36 -36
- {flet-0.70.0.dev6348.dist-info → flet-0.70.0.dev6370.dist-info}/WHEEL +0 -0
- {flet-0.70.0.dev6348.dist-info → flet-0.70.0.dev6370.dist-info}/entry_points.txt +0 -0
- {flet-0.70.0.dev6348.dist-info → flet-0.70.0.dev6370.dist-info}/top_level.txt +0 -0
flet/__init__.py
CHANGED
|
@@ -491,6 +491,7 @@ from flet.controls.types import (
|
|
|
491
491
|
ClipBehavior,
|
|
492
492
|
ColorValue,
|
|
493
493
|
CrossAxisAlignment,
|
|
494
|
+
DeviceOrientation,
|
|
494
495
|
FloatingActionButtonLocation,
|
|
495
496
|
FontWeight,
|
|
496
497
|
IconDataOrControl,
|
|
@@ -658,6 +659,7 @@ __all__ = [
|
|
|
658
659
|
"DateTimeValue",
|
|
659
660
|
"DecorationImage",
|
|
660
661
|
"DeviceInfo",
|
|
662
|
+
"DeviceOrientation",
|
|
661
663
|
"DialogControl",
|
|
662
664
|
"DialogTheme",
|
|
663
665
|
"DismissDirection",
|
flet/controls/base_control.py
CHANGED
|
@@ -233,9 +233,10 @@ class BaseControl:
|
|
|
233
233
|
def update(self) -> None:
|
|
234
234
|
if hasattr(self, "_frozen"):
|
|
235
235
|
raise Exception("Frozen control cannot be updated.")
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
if not self.page:
|
|
237
|
+
raise RuntimeError(
|
|
238
|
+
f"{self.__class__.__qualname__} Control must be added to the page first"
|
|
239
|
+
)
|
|
239
240
|
self.page.update(self)
|
|
240
241
|
|
|
241
242
|
async def _invoke_method(
|
|
@@ -244,9 +245,10 @@ class BaseControl:
|
|
|
244
245
|
arguments: Optional[dict[str, Any]] = None,
|
|
245
246
|
timeout: Optional[float] = None,
|
|
246
247
|
) -> Any:
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
248
|
+
if not self.page:
|
|
249
|
+
raise RuntimeError(
|
|
250
|
+
f"{self.__class__.__qualname__} Control must be added to the page first"
|
|
251
|
+
)
|
|
250
252
|
|
|
251
253
|
return await self.page.session.invoke_method(
|
|
252
254
|
self._i, method_name, arguments, timeout
|
|
@@ -282,10 +284,11 @@ class BaseControl:
|
|
|
282
284
|
|
|
283
285
|
controls_log.debug(f"Trigger event {self}.{field_name} {e}")
|
|
284
286
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
287
|
+
if not self.page:
|
|
288
|
+
raise RuntimeError(
|
|
289
|
+
"Control must be added to a page before triggering events. Use "
|
|
290
|
+
"page.add(control) or add it to a parent control that's on a page."
|
|
291
|
+
)
|
|
289
292
|
session = self.page.session
|
|
290
293
|
|
|
291
294
|
# Handle async and sync event handlers accordingly
|
flet/controls/base_page.py
CHANGED
|
@@ -35,6 +35,7 @@ from flet.controls.types import (
|
|
|
35
35
|
LocaleConfiguration,
|
|
36
36
|
MainAxisAlignment,
|
|
37
37
|
Number,
|
|
38
|
+
Orientation,
|
|
38
39
|
ScrollMode,
|
|
39
40
|
ThemeMode,
|
|
40
41
|
)
|
|
@@ -75,6 +76,11 @@ class PageMediaData:
|
|
|
75
76
|
The number of device pixels for each logical pixel.
|
|
76
77
|
"""
|
|
77
78
|
|
|
79
|
+
orientation: Orientation
|
|
80
|
+
"""
|
|
81
|
+
The orientation of the page.
|
|
82
|
+
"""
|
|
83
|
+
|
|
78
84
|
|
|
79
85
|
@dataclass
|
|
80
86
|
class PageResizeEvent(Event["BasePage"]):
|
|
@@ -184,7 +190,7 @@ class BasePage(AdaptiveControl):
|
|
|
184
190
|
|
|
185
191
|
on_media_change: Optional[EventHandler[PageMediaData]] = None
|
|
186
192
|
"""
|
|
187
|
-
Called when `media` has changed.
|
|
193
|
+
Called when [`media`][(c).] has changed.
|
|
188
194
|
"""
|
|
189
195
|
|
|
190
196
|
media: PageMediaData = field(
|
|
@@ -193,6 +199,7 @@ class BasePage(AdaptiveControl):
|
|
|
193
199
|
view_padding=Padding.zero(),
|
|
194
200
|
view_insets=Padding.zero(),
|
|
195
201
|
device_pixel_ratio=0,
|
|
202
|
+
orientation=Orientation.PORTRAIT,
|
|
196
203
|
)
|
|
197
204
|
)
|
|
198
205
|
"""
|
|
@@ -231,7 +238,8 @@ class BasePage(AdaptiveControl):
|
|
|
231
238
|
_dialogs: "Dialogs" = field(default_factory=lambda: Dialogs())
|
|
232
239
|
|
|
233
240
|
def __default_view(self) -> View:
|
|
234
|
-
|
|
241
|
+
if len(self.views) == 0:
|
|
242
|
+
raise RuntimeError("views list is empty.")
|
|
235
243
|
return self.views[0]
|
|
236
244
|
|
|
237
245
|
def update(self, *controls) -> None:
|
flet/controls/border.py
CHANGED
flet/controls/box.py
CHANGED
|
@@ -336,17 +336,17 @@ class BoxDecoration:
|
|
|
336
336
|
"""
|
|
337
337
|
|
|
338
338
|
def __post_init__(self):
|
|
339
|
-
|
|
339
|
+
if not (
|
|
340
340
|
self.blend_mode is None
|
|
341
341
|
or self.bgcolor is not None
|
|
342
342
|
or self.gradient is not None
|
|
343
|
-
)
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
343
|
+
):
|
|
344
|
+
raise ValueError(
|
|
345
|
+
"blend_mode applies to the BoxDecoration's background color "
|
|
346
|
+
"or gradient, but no color or gradient was provided"
|
|
347
|
+
)
|
|
348
|
+
if self.shape == BoxShape.CIRCLE and self.border_radius:
|
|
349
|
+
raise ValueError("border_radius must be None when shape is BoxShape.CIRCLE")
|
|
350
350
|
|
|
351
351
|
def copy(
|
|
352
352
|
self,
|
|
@@ -414,14 +414,16 @@ class BoxConstraints:
|
|
|
414
414
|
"""
|
|
415
415
|
|
|
416
416
|
def __post_init__(self):
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
417
|
+
if not (0 <= self.min_width <= self.max_width <= float("inf")):
|
|
418
|
+
raise ValueError(
|
|
419
|
+
"min_width and max_width must be between 0 and infinity "
|
|
420
|
+
"and min_width must be less than or equal to max_width"
|
|
421
|
+
)
|
|
422
|
+
if not (0 <= self.min_height <= self.max_height <= float("inf")):
|
|
423
|
+
raise ValueError(
|
|
424
|
+
"min_height and max_height must be between 0 and infinity "
|
|
425
|
+
"and min_height must be less than or equal to max_height"
|
|
426
|
+
)
|
|
425
427
|
|
|
426
428
|
def copy(
|
|
427
429
|
self,
|
flet/controls/colors.py
CHANGED
|
@@ -120,11 +120,12 @@ class Colors(str, Enum):
|
|
|
120
120
|
'red,0.5'
|
|
121
121
|
|
|
122
122
|
Raises:
|
|
123
|
-
|
|
123
|
+
ValueError: If the opacity is not between `0` and `1` (inclusive).
|
|
124
124
|
"""
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
if not (0 <= opacity <= 1):
|
|
126
|
+
raise ValueError(
|
|
127
|
+
f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
|
|
128
|
+
)
|
|
128
129
|
color_str = color.value if isinstance(color, Enum) else color
|
|
129
130
|
return f"{color_str},{opacity}"
|
|
130
131
|
|
flet/controls/context.py
CHANGED
flet/controls/control_event.py
CHANGED
|
@@ -97,7 +97,8 @@ class Event(Generic[EventControlType]):
|
|
|
97
97
|
|
|
98
98
|
@property
|
|
99
99
|
def page(self) -> Union["Page", "BasePage"]:
|
|
100
|
-
|
|
100
|
+
if not self.control.page:
|
|
101
|
+
raise RuntimeError("event control is not attached to a page")
|
|
101
102
|
return self.control.page
|
|
102
103
|
|
|
103
104
|
@property
|
|
@@ -70,12 +70,8 @@ class Dismissible(LayoutControl, AdaptiveControl):
|
|
|
70
70
|
A control that is stacked behind the [`content`][(c).] and is
|
|
71
71
|
exposed when it has been dragged up or to the left.
|
|
72
72
|
|
|
73
|
-
Note:
|
|
74
|
-
Can only be specified if [`background`][(c).] is also
|
|
75
|
-
specified/visible.
|
|
76
|
-
|
|
77
73
|
Raises:
|
|
78
|
-
ValueError: If
|
|
74
|
+
ValueError: If it is provided and visible
|
|
79
75
|
but the [`background`][(c).] is not provided and visible.
|
|
80
76
|
"""
|
|
81
77
|
|
|
@@ -58,36 +58,25 @@ class InteractiveViewer(LayoutControl):
|
|
|
58
58
|
"""
|
|
59
59
|
The maximum allowed scale.
|
|
60
60
|
|
|
61
|
-
Note:
|
|
62
|
-
Must be greater than or equal to [`min_scale`][(c).].
|
|
63
|
-
|
|
64
61
|
Raises:
|
|
65
|
-
ValueError: If
|
|
62
|
+
ValueError: If it is not greater than `0` or is less than
|
|
66
63
|
[`min_scale`][(c).].
|
|
67
|
-
"""
|
|
64
|
+
"""
|
|
68
65
|
|
|
69
66
|
min_scale: Number = 0.8
|
|
70
67
|
"""
|
|
71
68
|
The minimum allowed scale.
|
|
72
69
|
|
|
73
|
-
Note:
|
|
74
|
-
Must be greater than `0` and less than or equal
|
|
75
|
-
to [`max_scale`][(c).].
|
|
76
|
-
|
|
77
70
|
Raises:
|
|
78
|
-
ValueError: If
|
|
71
|
+
ValueError: If it is not greater than `0` or less than [`max_scale`][(c).].
|
|
79
72
|
"""
|
|
80
73
|
|
|
81
74
|
interaction_end_friction_coefficient: Number = 0.0000135
|
|
82
75
|
"""
|
|
83
76
|
Changes the deceleration behavior after a gesture.
|
|
84
77
|
|
|
85
|
-
Note:
|
|
86
|
-
Must be greater than `0`.
|
|
87
|
-
|
|
88
78
|
Raises:
|
|
89
|
-
ValueError: If
|
|
90
|
-
than `0`.
|
|
79
|
+
ValueError: If it is less than or equal to `0`.
|
|
91
80
|
"""
|
|
92
81
|
|
|
93
82
|
scale_factor: Number = 200
|
|
@@ -97,22 +86,23 @@ class InteractiveViewer(LayoutControl):
|
|
|
97
86
|
|
|
98
87
|
clip_behavior: ClipBehavior = ClipBehavior.HARD_EDGE
|
|
99
88
|
"""
|
|
100
|
-
|
|
89
|
+
Defines how to clip the [`content`][(c).].
|
|
101
90
|
"""
|
|
102
91
|
|
|
103
92
|
alignment: Optional[Alignment] = None
|
|
104
93
|
"""
|
|
105
|
-
|
|
94
|
+
The alignment of the [`content`][(c).] within this viewer.
|
|
106
95
|
"""
|
|
107
96
|
|
|
108
97
|
boundary_margin: MarginValue = 0
|
|
109
98
|
"""
|
|
110
|
-
A margin for the visible boundaries of the `content
|
|
99
|
+
A margin for the visible boundaries of the [`content`][(c).].
|
|
111
100
|
"""
|
|
112
101
|
|
|
113
102
|
interaction_update_interval: int = 200
|
|
114
103
|
"""
|
|
115
|
-
The interval (in milliseconds) at which the
|
|
104
|
+
The interval (in milliseconds) at which the
|
|
105
|
+
[`on_interaction_update`][(c).] event is fired.
|
|
116
106
|
"""
|
|
117
107
|
|
|
118
108
|
on_interaction_start: Optional[
|
|
@@ -149,10 +139,7 @@ class InteractiveViewer(LayoutControl):
|
|
|
149
139
|
"max_scale must be greater than or equal to min_scale, "
|
|
150
140
|
f"got max_scale={self.max_scale}, min_scale={self.min_scale}"
|
|
151
141
|
)
|
|
152
|
-
if
|
|
153
|
-
self.interaction_end_friction_coefficient is not None
|
|
154
|
-
and self.interaction_end_friction_coefficient <= 0
|
|
155
|
-
):
|
|
142
|
+
if self.interaction_end_friction_coefficient <= 0:
|
|
156
143
|
raise ValueError(
|
|
157
144
|
"interaction_end_friction_coefficient must be greater than 0, "
|
|
158
145
|
f"got {self.interaction_end_friction_coefficient}"
|
|
@@ -56,8 +56,7 @@ class ResponsiveRow(LayoutControl, AdaptiveControl):
|
|
|
56
56
|
|
|
57
57
|
Note:
|
|
58
58
|
Has effect only when [`alignment`][(c).] is set to
|
|
59
|
-
[`MainAxisAlignment.START`][flet.],
|
|
60
|
-
[`MainAxisAlignment.END`][flet.],
|
|
59
|
+
[`MainAxisAlignment.START`][flet.], [`MainAxisAlignment.END`][flet.],
|
|
61
60
|
or [`MainAxisAlignment.CENTER`][flet.].
|
|
62
61
|
"""
|
|
63
62
|
|
flet/controls/core/row.py
CHANGED
|
@@ -40,8 +40,7 @@ class Row(LayoutControl, ScrollableControl, AdaptiveControl):
|
|
|
40
40
|
|
|
41
41
|
Note:
|
|
42
42
|
Has effect only when [`alignment`][(c).] is set to
|
|
43
|
-
[`MainAxisAlignment.START`][flet.],
|
|
44
|
-
[`MainAxisAlignment.END`][flet.],
|
|
43
|
+
[`MainAxisAlignment.START`][flet.], [`MainAxisAlignment.END`][flet.],
|
|
45
44
|
or [`MainAxisAlignment.CENTER`][flet.].
|
|
46
45
|
"""
|
|
47
46
|
|
flet/controls/core/view.py
CHANGED
|
@@ -131,10 +131,8 @@ class View(ScrollableControl, LayoutControl):
|
|
|
131
131
|
|
|
132
132
|
Note:
|
|
133
133
|
Has effect only when [`vertical_alignment`][(c).]
|
|
134
|
-
is set to
|
|
135
|
-
[`MainAxisAlignment.
|
|
136
|
-
[`MainAxisAlignment.END`][flet.],
|
|
137
|
-
or [`MainAxisAlignment.CENTER`][flet.].
|
|
134
|
+
is set to [`MainAxisAlignment.START`][flet.],
|
|
135
|
+
[`MainAxisAlignment.END`][flet.], or [`MainAxisAlignment.CENTER`][flet.].
|
|
138
136
|
"""
|
|
139
137
|
|
|
140
138
|
padding: Optional[PaddingValue] = field(default_factory=lambda: Padding.all(10))
|
flet/controls/core/window.py
CHANGED
|
@@ -54,7 +54,7 @@ class Window(BaseControl):
|
|
|
54
54
|
"""
|
|
55
55
|
Controls the app window.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Limitation:
|
|
58
58
|
This control is for Desktop platforms (macOS, Windows, Linux) only.
|
|
59
59
|
"""
|
|
60
60
|
|
|
@@ -113,8 +113,8 @@ class Window(BaseControl):
|
|
|
113
113
|
"""
|
|
114
114
|
Defines the opacity of the app window.
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
Raises:
|
|
117
|
+
ValueError: If it is not between `0.0` and `1.0` inclusive.
|
|
118
118
|
"""
|
|
119
119
|
|
|
120
120
|
aspect_ratio: Optional[Number] = None
|
|
@@ -160,7 +160,7 @@ class Window(BaseControl):
|
|
|
160
160
|
"""
|
|
161
161
|
Whether the app window can be moved.
|
|
162
162
|
|
|
163
|
-
|
|
163
|
+
Limitation:
|
|
164
164
|
Has effect on macOS only.
|
|
165
165
|
"""
|
|
166
166
|
|
|
@@ -178,7 +178,7 @@ class Window(BaseControl):
|
|
|
178
178
|
"""
|
|
179
179
|
Whether the app window should always be displayed below other windows.
|
|
180
180
|
|
|
181
|
-
|
|
181
|
+
Limitation:
|
|
182
182
|
Has effect on Linux and Windows only.
|
|
183
183
|
"""
|
|
184
184
|
|
|
@@ -204,7 +204,7 @@ class Window(BaseControl):
|
|
|
204
204
|
"""
|
|
205
205
|
Whether to hide the app window's title bar buttons.
|
|
206
206
|
|
|
207
|
-
|
|
207
|
+
Limitation:
|
|
208
208
|
Has effect on macOS only.
|
|
209
209
|
"""
|
|
210
210
|
|
|
@@ -246,7 +246,7 @@ class Window(BaseControl):
|
|
|
246
246
|
"""
|
|
247
247
|
Sets a badge label on the app window.
|
|
248
248
|
|
|
249
|
-
|
|
249
|
+
Limitation:
|
|
250
250
|
Has effect on macOS only.
|
|
251
251
|
"""
|
|
252
252
|
|
|
@@ -256,7 +256,7 @@ class Window(BaseControl):
|
|
|
256
256
|
|
|
257
257
|
The file should have the `.ico` extension.
|
|
258
258
|
|
|
259
|
-
|
|
259
|
+
Limitation:
|
|
260
260
|
Has effect on Windows only.
|
|
261
261
|
"""
|
|
262
262
|
|
|
@@ -275,6 +275,10 @@ class Window(BaseControl):
|
|
|
275
275
|
def __post_init__(self, ref) -> None:
|
|
276
276
|
super().__post_init__(ref)
|
|
277
277
|
self._i = 2
|
|
278
|
+
if self.opacity < 0.0 or self.opacity > 1.0:
|
|
279
|
+
raise ValueError(
|
|
280
|
+
f"opacity must be between 0.0 and 1.0 inclusive, got {self.opacity}"
|
|
281
|
+
)
|
|
278
282
|
|
|
279
283
|
async def wait_until_ready_to_show(self):
|
|
280
284
|
"""
|
|
@@ -19,7 +19,7 @@ Code to sort the members:
|
|
|
19
19
|
```
|
|
20
20
|
s = sorted(CupertinoColors, key=lambda i: i.name)
|
|
21
21
|
for i in s:
|
|
22
|
-
print(f
|
|
22
|
+
print(f'{i.name} = "{i.value}"')
|
|
23
23
|
```
|
|
24
24
|
"""
|
|
25
25
|
|
|
@@ -54,18 +54,20 @@ class CupertinoColors(str, Enum):
|
|
|
54
54
|
color: The color to apply opacity to.
|
|
55
55
|
|
|
56
56
|
Returns:
|
|
57
|
-
A string representing the color with opacity,
|
|
57
|
+
A string representing the color with opacity,
|
|
58
|
+
in the format `"color,opacity"`.
|
|
58
59
|
|
|
59
60
|
Examples:
|
|
60
61
|
>>> CupertinoColors.with_opacity(0.5, CupertinoColors.WHITE)
|
|
61
62
|
'white,0.5'
|
|
62
63
|
|
|
63
64
|
Raises:
|
|
64
|
-
|
|
65
|
+
ValueError: If the opacity is not between `0` and `1` (inclusive).
|
|
65
66
|
"""
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
if not (0 <= opacity <= 1):
|
|
68
|
+
raise ValueError(
|
|
69
|
+
f"opacity must be between 0.0 and 1.0 inclusive, got {opacity}"
|
|
70
|
+
)
|
|
69
71
|
color_str = color.value if isinstance(color, Enum) else color
|
|
70
72
|
return f"{color_str},{opacity}"
|
|
71
73
|
|
|
@@ -103,7 +103,7 @@ class AppBar(AdaptiveControl):
|
|
|
103
103
|
(when [`Theme.use_material3`][flet.] is `False`).
|
|
104
104
|
|
|
105
105
|
Raises:
|
|
106
|
-
ValueError: If
|
|
106
|
+
ValueError: If it is less than `0.0`.
|
|
107
107
|
"""
|
|
108
108
|
|
|
109
109
|
elevation_on_scroll: Optional[Number] = None
|
|
@@ -111,7 +111,7 @@ class AppBar(AdaptiveControl):
|
|
|
111
111
|
The elevation to be used if this app bar has something scrolled underneath it.
|
|
112
112
|
|
|
113
113
|
Raises:
|
|
114
|
-
ValueError: If
|
|
114
|
+
ValueError: If it is less than `0.0`.
|
|
115
115
|
"""
|
|
116
116
|
|
|
117
117
|
shadow_color: Optional[ColorValue] = None
|
|
@@ -183,12 +183,11 @@ class AppBar(AdaptiveControl):
|
|
|
183
183
|
"""
|
|
184
184
|
The opacity of the toolbar.
|
|
185
185
|
|
|
186
|
-
|
|
187
|
-
|
|
186
|
+
- `0.0`: transparent
|
|
187
|
+
- `1.0`: fully opaque
|
|
188
188
|
|
|
189
189
|
Raises:
|
|
190
|
-
ValueError: If
|
|
191
|
-
and `1.0` inclusive.
|
|
190
|
+
ValueError: If it is not between `0.0` and `1.0` inclusive.
|
|
192
191
|
"""
|
|
193
192
|
|
|
194
193
|
title_text_style: Optional[TextStyle] = None
|
flet/controls/material/chip.py
CHANGED
|
@@ -168,11 +168,8 @@ class Chip(LayoutControl):
|
|
|
168
168
|
|
|
169
169
|
Defaults to `8.0`.
|
|
170
170
|
|
|
171
|
-
Note:
|
|
172
|
-
Must be non-negative.
|
|
173
|
-
|
|
174
171
|
Raises:
|
|
175
|
-
ValueError: If
|
|
172
|
+
ValueError: If it is less than `0.0`.
|
|
176
173
|
"""
|
|
177
174
|
|
|
178
175
|
clip_behavior: ClipBehavior = ClipBehavior.NONE
|
|
@@ -230,12 +227,8 @@ class Chip(LayoutControl):
|
|
|
230
227
|
"""
|
|
231
228
|
Called when the user clicks on this chip.
|
|
232
229
|
|
|
233
|
-
Note:
|
|
234
|
-
Cannot be specified together with [`on_select`][(c).].
|
|
235
|
-
|
|
236
230
|
Raises:
|
|
237
|
-
ValueError: If
|
|
238
|
-
are provided.
|
|
231
|
+
ValueError: If specified together with [`on_select`][(c).].
|
|
239
232
|
"""
|
|
240
233
|
|
|
241
234
|
on_delete: Optional[ControlEventHandler["Chip"]] = None
|
|
@@ -249,8 +242,8 @@ class Chip(LayoutControl):
|
|
|
249
242
|
|
|
250
243
|
It internally changes [`selected`][(c).] property to the opposite value.
|
|
251
244
|
|
|
252
|
-
|
|
253
|
-
|
|
245
|
+
Raises:
|
|
246
|
+
ValueError: If specified together with [`on_click`][(c).].
|
|
254
247
|
"""
|
|
255
248
|
|
|
256
249
|
on_focus: Optional[ControlEventHandler["Chip"]] = None
|
|
@@ -79,9 +79,8 @@ class CircleAvatar(LayoutControl):
|
|
|
79
79
|
[`max_radius`][(c).] may be specified.
|
|
80
80
|
|
|
81
81
|
Raises:
|
|
82
|
-
ValueError: If
|
|
83
|
-
|
|
84
|
-
or [`max_radius`][(c).] is provided.
|
|
82
|
+
ValueError: If it is less than `0.0` or if it is
|
|
83
|
+
provided while [`min_radius`][(c).] or [`max_radius`][(c).] is set.
|
|
85
84
|
"""
|
|
86
85
|
|
|
87
86
|
min_radius: Optional[Number] = None
|
|
@@ -92,7 +91,7 @@ class CircleAvatar(LayoutControl):
|
|
|
92
91
|
Defaults to `0.0`.
|
|
93
92
|
|
|
94
93
|
Raises:
|
|
95
|
-
ValueError: If
|
|
94
|
+
ValueError: If it is negative.
|
|
96
95
|
"""
|
|
97
96
|
|
|
98
97
|
max_radius: Optional[Number] = None
|
|
@@ -105,8 +104,8 @@ class CircleAvatar(LayoutControl):
|
|
|
105
104
|
If `max_radius` is specified, then [`radius`][(c).] should not be specified.
|
|
106
105
|
|
|
107
106
|
Raises:
|
|
108
|
-
ValueError: If
|
|
109
|
-
|
|
107
|
+
ValueError: If it is less than `0.0` or if it is
|
|
108
|
+
provided while [`radius`][(c).] is set.
|
|
110
109
|
"""
|
|
111
110
|
|
|
112
111
|
on_image_error: Optional[ControlEventHandler["CircleAvatar"]] = None
|
|
@@ -29,7 +29,7 @@ __all__ = ["Dropdown", "DropdownOption"]
|
|
|
29
29
|
class DropdownOption(Control):
|
|
30
30
|
"""
|
|
31
31
|
Represents an item in a dropdown. Either `key` or `text` must be specified, else an
|
|
32
|
-
`
|
|
32
|
+
A `ValueError` will be raised.
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
35
|
key: Optional[str] = None
|
|
@@ -247,7 +247,8 @@ class Dropdown(LayoutControl):
|
|
|
247
247
|
"""
|
|
248
248
|
Text that appears below the input border.
|
|
249
249
|
|
|
250
|
-
If non-null, the border's color animates to red and the `helper_text` is
|
|
250
|
+
If non-null, the border's color animates to red and the [`helper_text`][(c).] is
|
|
251
|
+
not shown.
|
|
251
252
|
"""
|
|
252
253
|
|
|
253
254
|
text_size: Optional[Number] = None
|
|
@@ -291,13 +292,18 @@ class Dropdown(LayoutControl):
|
|
|
291
292
|
|
|
292
293
|
border_width: Number = 1
|
|
293
294
|
"""
|
|
294
|
-
The width of the border in virtual pixels.
|
|
295
|
+
The width of the border in virtual pixels.
|
|
296
|
+
|
|
297
|
+
Tip:
|
|
298
|
+
Set to `0` to completely remove the border.
|
|
295
299
|
"""
|
|
296
300
|
|
|
297
301
|
border_color: Optional[ColorValue] = None
|
|
298
302
|
"""
|
|
299
|
-
Border color.
|
|
300
|
-
|
|
303
|
+
Border color.
|
|
304
|
+
|
|
305
|
+
Tip:
|
|
306
|
+
Set to [`Colors.TRANSPARENT`][flet.] to hide the border.
|
|
301
307
|
"""
|
|
302
308
|
|
|
303
309
|
border_radius: Optional[BorderRadiusValue] = None
|
|
@@ -19,8 +19,8 @@ __all__ = ["DropdownM2", "Option"]
|
|
|
19
19
|
@control("Option")
|
|
20
20
|
class Option(Control):
|
|
21
21
|
"""
|
|
22
|
-
Represents an item in a dropdown. Either `key` or `text` must be specified, else
|
|
23
|
-
`
|
|
22
|
+
Represents an item in a dropdown. Either `key` or `text` must be specified, else a
|
|
23
|
+
`ValueError` will be raised.
|
|
24
24
|
"""
|
|
25
25
|
|
|
26
26
|
key: Optional[str] = None
|
|
@@ -58,9 +58,8 @@ class Option(Control):
|
|
|
58
58
|
|
|
59
59
|
def before_update(self):
|
|
60
60
|
super().before_update()
|
|
61
|
-
|
|
62
|
-
"key or text must be specified"
|
|
63
|
-
)
|
|
61
|
+
if self.key is None and self.text is None:
|
|
62
|
+
raise ValueError("key or text must be specified")
|
|
64
63
|
|
|
65
64
|
|
|
66
65
|
@control("DropdownM2")
|
|
@@ -64,13 +64,12 @@ class ExpansionPanel(LayoutControl, AdaptiveControl):
|
|
|
64
64
|
|
|
65
65
|
expanded: bool = False
|
|
66
66
|
"""
|
|
67
|
-
Whether expanded(`True`) or collapsed(`False`).
|
|
67
|
+
Whether expanded(`True`) or collapsed(`False`).
|
|
68
68
|
"""
|
|
69
69
|
|
|
70
70
|
can_tap_header: bool = False
|
|
71
71
|
"""
|
|
72
|
-
If `True`, tapping on the panel's `header` will expand or collapse it.
|
|
73
|
-
`False`.
|
|
72
|
+
If `True`, tapping on the panel's `header` will expand or collapse it.
|
|
74
73
|
"""
|
|
75
74
|
|
|
76
75
|
splash_color: Optional[ColorValue] = None
|
|
@@ -109,19 +108,21 @@ class ExpansionPanelList(LayoutControl):
|
|
|
109
108
|
|
|
110
109
|
controls: list[ExpansionPanel] = field(default_factory=list)
|
|
111
110
|
"""
|
|
112
|
-
A list of
|
|
111
|
+
A list of panels to display.
|
|
113
112
|
"""
|
|
114
113
|
|
|
115
114
|
divider_color: Optional[ColorValue] = None
|
|
116
115
|
"""
|
|
117
116
|
The color of the divider when
|
|
118
|
-
`ExpansionPanel.expanded` is `False`.
|
|
117
|
+
[`ExpansionPanel.expanded`][flet.] is `False`.
|
|
119
118
|
"""
|
|
120
119
|
|
|
121
120
|
elevation: Number = 2
|
|
122
121
|
"""
|
|
123
|
-
Defines the elevation of the
|
|
124
|
-
|
|
122
|
+
Defines the elevation of the [`controls`][(c).], when expanded.
|
|
123
|
+
|
|
124
|
+
Raises:
|
|
125
|
+
ValueError: If it is less than zero.
|
|
125
126
|
"""
|
|
126
127
|
|
|
127
128
|
expanded_header_padding: PaddingValue = field(
|
|
@@ -133,23 +134,26 @@ class ExpansionPanelList(LayoutControl):
|
|
|
133
134
|
|
|
134
135
|
expand_icon_color: Optional[ColorValue] = None
|
|
135
136
|
"""
|
|
136
|
-
The color of the icon.
|
|
137
|
-
|
|
137
|
+
The color of the icon.
|
|
138
|
+
|
|
139
|
+
Defaults to [`Colors.BLACK_54`][flet.] in light theme mode and
|
|
140
|
+
[`Colors.WHITE_60`][flet.] in dark theme mode.
|
|
138
141
|
"""
|
|
139
142
|
|
|
140
143
|
spacing: Optional[Number] = None
|
|
141
144
|
"""
|
|
142
|
-
The size of the gap between the `
|
|
145
|
+
The size of the gap between the [`controls`][(c).]s when expanded.
|
|
143
146
|
"""
|
|
144
147
|
|
|
145
148
|
on_change: Optional[ControlEventHandler["ExpansionPanelList"]] = None
|
|
146
149
|
"""
|
|
147
|
-
Called when an `
|
|
148
|
-
|
|
150
|
+
Called when an item of [`controls`][(c).] is expanded or collapsed.
|
|
151
|
+
|
|
152
|
+
The event's [`data`][flet.Event.], contains the index of the
|
|
153
|
+
child panel (in [`controls`][(c).]) which triggered this event.
|
|
149
154
|
"""
|
|
150
155
|
|
|
151
156
|
def before_update(self):
|
|
152
157
|
super().before_update()
|
|
153
|
-
|
|
154
|
-
"elevation
|
|
155
|
-
)
|
|
158
|
+
if self.elevation < 0:
|
|
159
|
+
raise ValueError("elevation must be greater than or equal to zero")
|
|
@@ -48,7 +48,10 @@ class MenuBar(Control):
|
|
|
48
48
|
|
|
49
49
|
controls: list[Control] = field(default_factory=list)
|
|
50
50
|
"""
|
|
51
|
-
|
|
51
|
+
A list of top-level menu controls to display in this menu bar.
|
|
52
|
+
|
|
53
|
+
Raises:
|
|
54
|
+
ValueError: If none of the controls are visible.
|
|
52
55
|
"""
|
|
53
56
|
|
|
54
57
|
clip_behavior: ClipBehavior = ClipBehavior.NONE
|
|
@@ -58,11 +61,10 @@ class MenuBar(Control):
|
|
|
58
61
|
|
|
59
62
|
style: Optional[MenuStyle] = None
|
|
60
63
|
"""
|
|
61
|
-
|
|
64
|
+
The menu bar style.
|
|
62
65
|
"""
|
|
63
66
|
|
|
64
67
|
def before_update(self):
|
|
65
68
|
super().before_update()
|
|
66
|
-
|
|
67
|
-
"MenuBar must have at minimum one visible control"
|
|
68
|
-
)
|
|
69
|
+
if not any(c.visible for c in self.controls):
|
|
70
|
+
raise ValueError("MenuBar must have at minimum one visible control")
|
|
@@ -219,11 +219,8 @@ class SnackBar(DialogControl):
|
|
|
219
219
|
|
|
220
220
|
At a value of `0.0`, the `action` will not overflow to a new line.
|
|
221
221
|
|
|
222
|
-
Note:
|
|
223
|
-
Must be between `0.0` and `1.0` inclusive.
|
|
224
|
-
|
|
225
222
|
Raises:
|
|
226
|
-
ValueError: If
|
|
223
|
+
ValueError: If it is not between `0.0` and `1.0` inclusive.
|
|
227
224
|
"""
|
|
228
225
|
|
|
229
226
|
on_action: Optional[ControlEventHandler["SnackBar"]] = None
|
flet/controls/material/tabs.py
CHANGED
|
@@ -172,7 +172,7 @@ class Tabs(LayoutControl, AdaptiveControl):
|
|
|
172
172
|
it when adding/removing tabs.
|
|
173
173
|
|
|
174
174
|
Raises:
|
|
175
|
-
ValueError: If
|
|
175
|
+
ValueError: If it is negative.
|
|
176
176
|
"""
|
|
177
177
|
|
|
178
178
|
selected_index: int = 0
|
|
@@ -191,8 +191,7 @@ class Tabs(LayoutControl, AdaptiveControl):
|
|
|
191
191
|
use [`move_to`][(c).] directly.
|
|
192
192
|
|
|
193
193
|
Raises:
|
|
194
|
-
IndexError: If
|
|
195
|
-
`[-length, length - 1]`.
|
|
194
|
+
IndexError: If it is not in the range `[-length, length - 1]`.
|
|
196
195
|
"""
|
|
197
196
|
|
|
198
197
|
animation_duration: DurationValue = field(
|
|
@@ -353,18 +352,14 @@ class TabBar(LayoutControl, AdaptiveControl):
|
|
|
353
352
|
otherwise [`TabAlignment.FILL`][flet.] is used.
|
|
354
353
|
|
|
355
354
|
Note:
|
|
356
|
-
- If [`scrollable`][(c).] is `False`, then
|
|
357
|
-
[`
|
|
358
|
-
|
|
359
|
-
[`TabAlignment.
|
|
360
|
-
- If [`scrollable`][(c).] is `True`, then
|
|
361
|
-
[`tab_alignment`][(c).] must be
|
|
362
|
-
[`TabAlignment.START`][flet.],
|
|
363
|
-
[`TabAlignment.START_OFFSET`][flet.]
|
|
355
|
+
- If [`scrollable`][(c).] is `False`, then [`tab_alignment`][(c).] must be
|
|
356
|
+
either [`TabAlignment.FILL`][flet.] or [`TabAlignment.CENTER`][flet.].
|
|
357
|
+
- If [`scrollable`][(c).] is `True`, then [`tab_alignment`][(c).] must be
|
|
358
|
+
[`TabAlignment.START`][flet.], [`TabAlignment.START_OFFSET`][flet.]
|
|
364
359
|
or [`TabAlignment.CENTER`][flet.].
|
|
365
360
|
|
|
366
361
|
Raises:
|
|
367
|
-
ValueError: If
|
|
362
|
+
ValueError: If it is not valid for the current
|
|
368
363
|
[`scrollable`][(c).] configuration.
|
|
369
364
|
"""
|
|
370
365
|
|
flet/controls/page.py
CHANGED
|
@@ -42,6 +42,7 @@ from flet.controls.device_info import (
|
|
|
42
42
|
WebDeviceInfo,
|
|
43
43
|
WindowsDeviceInfo,
|
|
44
44
|
)
|
|
45
|
+
from flet.controls.exceptions import FletUnsupportedPlatformException
|
|
45
46
|
from flet.controls.multi_view import MultiView
|
|
46
47
|
from flet.controls.query_string import QueryString
|
|
47
48
|
from flet.controls.ref import Ref
|
|
@@ -54,6 +55,7 @@ from flet.controls.services.url_launcher import UrlLauncher
|
|
|
54
55
|
from flet.controls.types import (
|
|
55
56
|
AppLifecycleState,
|
|
56
57
|
Brightness,
|
|
58
|
+
DeviceOrientation,
|
|
57
59
|
PagePlatform,
|
|
58
60
|
Url,
|
|
59
61
|
UrlTarget,
|
|
@@ -198,7 +200,7 @@ class Page(BasePage):
|
|
|
198
200
|
Used to enable or disable the context menu that appears when the user
|
|
199
201
|
right-clicks on the web page.
|
|
200
202
|
|
|
201
|
-
|
|
203
|
+
Limitation:
|
|
202
204
|
Web only.
|
|
203
205
|
"""
|
|
204
206
|
|
|
@@ -939,3 +941,48 @@ class Page(BasePage):
|
|
|
939
941
|
return from_dict(WindowsDeviceInfo, info)
|
|
940
942
|
else:
|
|
941
943
|
return None
|
|
944
|
+
|
|
945
|
+
async def set_allowed_device_orientations(
|
|
946
|
+
self, orientations: list[DeviceOrientation]
|
|
947
|
+
) -> None:
|
|
948
|
+
"""
|
|
949
|
+
Constrains the allowed orientations for the app when running on a mobile device.
|
|
950
|
+
|
|
951
|
+
Args:
|
|
952
|
+
orientations: A list of allowed device orientations.
|
|
953
|
+
Set to an empty list to use the system default behavior.
|
|
954
|
+
|
|
955
|
+
Raises:
|
|
956
|
+
FletUnsupportedPlatformException: If the method is called
|
|
957
|
+
on a non-mobile platform.
|
|
958
|
+
|
|
959
|
+
Limitations:
|
|
960
|
+
- **Android**: On Android 16 (API 36) or later, this method won't be able to
|
|
961
|
+
change the orientation of **devices with a display width ≥ 600 dp**
|
|
962
|
+
cannot change orientation. For more details see Android 16 docs
|
|
963
|
+
[here](https://developer.android.com/about/versions/16/behavior-changes-16#ignore-orientation).
|
|
964
|
+
Also, Android limits the [orientations](https://developer.android.com/reference/android/R.attr#screenOrientation) to the following combinations:
|
|
965
|
+
- `[]` → `unspecified`
|
|
966
|
+
- `[PORTRAIT_UP]` → `portrait`
|
|
967
|
+
- `[LANDSCAPE_LEFT]` → `landscape`
|
|
968
|
+
- `[PORTRAIT_DOWN]` → `reversePortrait`
|
|
969
|
+
- `[PORTRAIT_UP, PORTRAIT_DOWN]` → `userPortrait`
|
|
970
|
+
- `[LANDSCAPE_RIGHT]` → `reverseLandscape`
|
|
971
|
+
- `[LANDSCAPE_LEFT, LANDSCAPE_RIGHT]` → `userLandscape`
|
|
972
|
+
- `[PORTRAIT_UP, LANDSCAPE_LEFT, LANDSCAPE_RIGHT]` → `user`
|
|
973
|
+
- `[PORTRAIT_UP, PORTRAIT_DOWN, LANDSCAPE_LEFT, LANDSCAPE_RIGHT]` → `fullUser`
|
|
974
|
+
|
|
975
|
+
- **iOS**: This setting will only be respected on iPad if multitasking is disabled.
|
|
976
|
+
You can decide to opt out of multitasking on iPad, then this will work
|
|
977
|
+
but your app will not support Slide Over and Split View multitasking
|
|
978
|
+
anymore. Should you decide to opt out of multitasking you can do this by
|
|
979
|
+
setting "Requires full screen" to true in the Xcode Deployment Info.
|
|
980
|
+
""" # noqa: E501
|
|
981
|
+
if not self.platform.is_mobile():
|
|
982
|
+
raise FletUnsupportedPlatformException(
|
|
983
|
+
"set_allowed_device_orientations is only supported on mobile platforms"
|
|
984
|
+
)
|
|
985
|
+
await self._invoke_method(
|
|
986
|
+
"set_allowed_device_orientations",
|
|
987
|
+
arguments={"orientations": orientations},
|
|
988
|
+
)
|
|
@@ -9,7 +9,8 @@ __all__ = ["SharedPreferences"]
|
|
|
9
9
|
@control("SharedPreferences")
|
|
10
10
|
class SharedPreferences(Service):
|
|
11
11
|
async def set(self, key: str, value: Any) -> bool:
|
|
12
|
-
|
|
12
|
+
if value is None:
|
|
13
|
+
raise ValueError("value can't be None")
|
|
13
14
|
return await self._invoke_method("set", {"key": key, "value": value})
|
|
14
15
|
|
|
15
16
|
async def get(self, key: str):
|
flet/controls/types.py
CHANGED
|
@@ -544,17 +544,43 @@ class Brightness(Enum):
|
|
|
544
544
|
|
|
545
545
|
class Orientation(Enum):
|
|
546
546
|
"""
|
|
547
|
-
|
|
547
|
+
Represents the layout orientation.
|
|
548
548
|
"""
|
|
549
549
|
|
|
550
550
|
PORTRAIT = "portrait"
|
|
551
551
|
"""
|
|
552
|
-
|
|
552
|
+
Orientation with greater height than width.
|
|
553
553
|
"""
|
|
554
554
|
|
|
555
555
|
LANDSCAPE = "landscape"
|
|
556
556
|
"""
|
|
557
|
-
|
|
557
|
+
Orientation with greater width than height.
|
|
558
|
+
"""
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
class DeviceOrientation(Enum):
|
|
562
|
+
"""
|
|
563
|
+
Supported physical orientations for mobile devices.
|
|
564
|
+
"""
|
|
565
|
+
|
|
566
|
+
PORTRAIT_UP = "portraitUp"
|
|
567
|
+
"""
|
|
568
|
+
Device held upright in portrait mode.
|
|
569
|
+
"""
|
|
570
|
+
|
|
571
|
+
PORTRAIT_DOWN = "portraitDown"
|
|
572
|
+
"""
|
|
573
|
+
Device held upside-down in portrait mode.
|
|
574
|
+
"""
|
|
575
|
+
|
|
576
|
+
LANDSCAPE_LEFT = "landscapeLeft"
|
|
577
|
+
"""
|
|
578
|
+
Device rotated 90° counter-clockwise (home button or primary edge on the right).
|
|
579
|
+
"""
|
|
580
|
+
|
|
581
|
+
LANDSCAPE_RIGHT = "landscapeRight"
|
|
582
|
+
"""
|
|
583
|
+
Device rotated 90° clockwise (home button or primary edge on the left).
|
|
558
584
|
"""
|
|
559
585
|
|
|
560
586
|
|
flet/pubsub/pubsub_hub.py
CHANGED
|
@@ -147,7 +147,8 @@ class PubSubHub:
|
|
|
147
147
|
def __send(
|
|
148
148
|
self, handler: Union[Callable, Callable[..., Awaitable[Any]]], args: Iterable
|
|
149
149
|
):
|
|
150
|
-
|
|
150
|
+
if not self.__loop:
|
|
151
|
+
raise RuntimeError("PubSub event loop is not set")
|
|
151
152
|
|
|
152
153
|
if asyncio.iscoroutinefunction(handler):
|
|
153
154
|
asyncio.run_coroutine_threadsafe(handler(*args), self.__loop)
|
flet/testing/flet_test_app.py
CHANGED
|
@@ -136,7 +136,8 @@ class FletTestApp:
|
|
|
136
136
|
"""
|
|
137
137
|
Returns an instance of Flet's app [`Page`][flet.].
|
|
138
138
|
"""
|
|
139
|
-
|
|
139
|
+
if self.__page is None:
|
|
140
|
+
raise RuntimeError("page is not initialized")
|
|
140
141
|
return self.__page
|
|
141
142
|
|
|
142
143
|
@property
|
|
@@ -145,7 +146,8 @@ class FletTestApp:
|
|
|
145
146
|
Returns an instance of [`Tester`][flet.testing.] class
|
|
146
147
|
that programmatically interacts with page controls and the test environment.
|
|
147
148
|
"""
|
|
148
|
-
|
|
149
|
+
if self.__tester is None:
|
|
150
|
+
raise RuntimeError("tester is not initialized")
|
|
149
151
|
return self.__tester
|
|
150
152
|
|
|
151
153
|
async def start(self):
|
|
@@ -330,10 +332,13 @@ class FletTestApp:
|
|
|
330
332
|
name: Screenshot name - will be used as a base for a screenshot filename.
|
|
331
333
|
screenshot: Screenshot contents in PNG format.
|
|
332
334
|
"""
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
335
|
+
if not self.test_platform:
|
|
336
|
+
raise RuntimeError(
|
|
337
|
+
"FLET_TEST_PLATFORM environment variable must be set "
|
|
338
|
+
"to test with screenshots"
|
|
339
|
+
)
|
|
340
|
+
if not self.__test_path:
|
|
341
|
+
raise RuntimeError("test_path must be set to test with screenshots")
|
|
337
342
|
|
|
338
343
|
golden_image_path = (
|
|
339
344
|
Path(self.__test_path).parent
|
flet/utils/pip.py
CHANGED
|
@@ -28,26 +28,30 @@ def install_flet_package(name: str):
|
|
|
28
28
|
|
|
29
29
|
def ensure_flet_desktop_package_installed():
|
|
30
30
|
try:
|
|
31
|
-
import flet.version
|
|
32
31
|
import flet_desktop.version
|
|
33
32
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
import flet.version
|
|
34
|
+
|
|
35
|
+
if (
|
|
36
|
+
flet_desktop.version.version
|
|
37
|
+
and flet_desktop.version.version != flet.version.version
|
|
38
|
+
):
|
|
39
|
+
raise RuntimeError("flet-desktop version mismatch")
|
|
38
40
|
except:
|
|
39
41
|
install_flet_package("flet-desktop")
|
|
40
42
|
|
|
41
43
|
|
|
42
44
|
def ensure_flet_web_package_installed():
|
|
43
45
|
try:
|
|
44
|
-
import flet.version
|
|
45
46
|
import flet_web.version
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
import flet.version
|
|
49
|
+
|
|
50
|
+
if (
|
|
51
|
+
flet_web.version.version
|
|
52
|
+
and flet_web.version.version != flet.version.version
|
|
53
|
+
):
|
|
54
|
+
raise RuntimeError("flet-web version mismatch")
|
|
51
55
|
except:
|
|
52
56
|
install_flet_package("flet-web")
|
|
53
57
|
|
|
@@ -57,9 +61,10 @@ def ensure_flet_cli_package_installed():
|
|
|
57
61
|
import flet.version
|
|
58
62
|
import flet_cli.version
|
|
59
63
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
)
|
|
64
|
+
if (
|
|
65
|
+
flet_cli.version.version
|
|
66
|
+
and flet_cli.version.version != flet.version.version
|
|
67
|
+
):
|
|
68
|
+
raise RuntimeError("flet-cli version mismatch")
|
|
64
69
|
except:
|
|
65
70
|
install_flet_package("flet-cli")
|
flet/version.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
flet/__init__.py,sha256=
|
|
1
|
+
flet/__init__.py,sha256=39Ci10DOyWcl-9adUYDbIX7eR0PHsRELpESPQZnCw9M,26200
|
|
2
2
|
flet/app.py,sha256=HSws0Zm4ZO0-Hp2P9h7xirCVnRkKCVXhuekyAXT_9Fo,11883
|
|
3
3
|
flet/cli.py,sha256=IUM25fY_sqMtl0hlQGhlMQaBb1oNyO0VZeeBgRodhuA,204
|
|
4
|
-
flet/version.py,sha256=
|
|
4
|
+
flet/version.py,sha256=G79_e0GaEWAHubI5qUf3Oswkoj0--Y3hrdFTF03GxoM,2512
|
|
5
5
|
flet/auth/__init__.py,sha256=eDqmi0Ki8Resd198S7XxgYa2R14wnNqIXnYhBLPl8fQ,289
|
|
6
6
|
flet/auth/authorization.py,sha256=hP_36RiRPtSwmK_Yp6MMzAjQdDxbBiEcZ2yFNqyNiRs,357
|
|
7
7
|
flet/auth/authorization_service.py,sha256=6N2LvisSt7KI_VgfyCH0OaJ6jTcmXCkAldN1yYlakzQ,6410
|
|
@@ -34,17 +34,17 @@ flet/controls/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
34
34
|
flet/controls/adaptive_control.py,sha256=Pw0E7z0IlNSe05cQTi5BLElLF3OnlVLzwfvtOQpsRr8,1594
|
|
35
35
|
flet/controls/alignment.py,sha256=re4jnpuqNPPWs55bf8RB_c9llqcuGhZcCjdNutx2N5M,3257
|
|
36
36
|
flet/controls/animation.py,sha256=C3Sxqte4S225m3UvlQOm-DGxd1WJaqfdLpA6e10B_BM,3763
|
|
37
|
-
flet/controls/base_control.py,sha256=
|
|
38
|
-
flet/controls/base_page.py,sha256=
|
|
37
|
+
flet/controls/base_control.py,sha256=MtePz5xzgVpAQQxb-wNr-roAs3Oud3G8DY__zmf1Gzg,10667
|
|
38
|
+
flet/controls/base_page.py,sha256=JhkaB0Fm5S4nAKLuNRpZQFbVnJcFUPmNh9fjcVulOZs,18106
|
|
39
39
|
flet/controls/blur.py,sha256=taMH4qtILyAFn1qNsgBGRV3z0GSH6V7VKPV3ZSBhOL4,602
|
|
40
|
-
flet/controls/border.py,sha256=
|
|
40
|
+
flet/controls/border.py,sha256=aBxj8OzEoufGPZb5yibsg2SO2OHeBAFmti63-y_oQtY,8808
|
|
41
41
|
flet/controls/border_radius.py,sha256=ePfpA_uNhR6bfBSmYxy2cO0mZ3FU1r63qX_5RuHWwDM,6605
|
|
42
|
-
flet/controls/box.py,sha256=
|
|
42
|
+
flet/controls/box.py,sha256=UAz27hMyzXtUGjgm0bTtVupaEkWqUkhAeA1wR1YKoOs,12726
|
|
43
43
|
flet/controls/buttons.py,sha256=0mLPx4fBjQNGn-ejMuNu1wHb38_0BGU0JOggmqbUs1E,9943
|
|
44
|
-
flet/controls/colors.py,sha256=
|
|
45
|
-
flet/controls/context.py,sha256=
|
|
44
|
+
flet/controls/colors.py,sha256=SIdze3v4ZACxVumHqD-zI8VWsS2cUU_W8ILGSYbKxfU,15379
|
|
45
|
+
flet/controls/context.py,sha256=5daq2ixcHNcs2pyYbH9KCe-tHCq2_ebPjvORMs1TtD4,4250
|
|
46
46
|
flet/controls/control.py,sha256=12Y_b8g8iSY8FlafeYZpaeJSgZQaKNzBLUof5JW4YlU,4488
|
|
47
|
-
flet/controls/control_event.py,sha256=
|
|
47
|
+
flet/controls/control_event.py,sha256=lM3H2V388JUQj9uCbPuUD7t2GxdEwX6F2nBluPzvzBc,3182
|
|
48
48
|
flet/controls/control_state.py,sha256=7Pi_WirBkE5dmUN0QnQLjSaW17Nj_escRlUvNxlrNR8,433
|
|
49
49
|
flet/controls/device_info.py,sha256=fWhy73oldll9BZagLcPZG-YKi_wu6caEKCdOwP6SZXA,23465
|
|
50
50
|
flet/controls/dialog_control.py,sha256=4a1poIK4al6DAsdiV56jE-Q4E-eKrvP12DqYw5HFvYM,507
|
|
@@ -62,7 +62,7 @@ flet/controls/margin.py,sha256=ni5FwkchO1LPKPTKV0Cimvh2YzABi-t5DhOqTS25eIQ,2305
|
|
|
62
62
|
flet/controls/multi_view.py,sha256=7RbM1nt8t75qgTKyfemsV06XQ04Mer0Op409Nu9q9Vs,304
|
|
63
63
|
flet/controls/object_patch.py,sha256=0OE8TswTyYH_l1yEqJPIf-Z6kLnOCCQCYiV-gNUvuSA,44111
|
|
64
64
|
flet/controls/padding.py,sha256=AdxAZ5dbg1-Bo8aKeJ7AptUdyjaX7VWBIJto5mBT9Pk,2485
|
|
65
|
-
flet/controls/page.py,sha256=
|
|
65
|
+
flet/controls/page.py,sha256=Hkxq5mv8UEhtWra9EOA7buytW7Bae3NrlHo-UwTpqj8,30361
|
|
66
66
|
flet/controls/painting.py,sha256=GCEycacejiCAdA4eZBQlTgxmE2ccXyad4Gy7VsjIwn0,12108
|
|
67
67
|
flet/controls/query_string.py,sha256=HbepJ8YUjyPj12gMiJRrTpUXdlfS7XQlbRb5AGFX_sM,3577
|
|
68
68
|
flet/controls/ref.py,sha256=Lde_Nlly6NEtJX_LYv_DxIDkao6w4Buo7Nus4XUPQDA,580
|
|
@@ -71,12 +71,12 @@ flet/controls/template_route.py,sha256=qP5KvFY5gazw-G9Q9bcoADlWAh-MJ_9wsIyIxjElk
|
|
|
71
71
|
flet/controls/text_style.py,sha256=WC8uPdfps5PyZ64cdPBnWhC2HULK39Uah5V368JdVoI,9386
|
|
72
72
|
flet/controls/theme.py,sha256=jed561Y3ENTgp1aHB6z5djzJdZdmazaDjfMy1acpWuI,97055
|
|
73
73
|
flet/controls/transform.py,sha256=gZQGM5nhfiapvm25uxvswbTWu0qQM3oBGRVxSTDhGYY,2782
|
|
74
|
-
flet/controls/types.py,sha256=
|
|
74
|
+
flet/controls/types.py,sha256=t9yWNzzJMI-o9Ji4Ia59OdFonNiKwQoj2WGP7qhjHbI,26194
|
|
75
75
|
flet/controls/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
76
|
flet/controls/core/animated_switcher.py,sha256=6aYrxH_3wc-9YSdS-6BqKR6F75sBzykbi2ttnqeglr4,1873
|
|
77
77
|
flet/controls/core/autofill_group.py,sha256=RqaO3dJo6eXnHmIeIg-NnEEeTq6-PlkhIlwscngVz4A,3709
|
|
78
78
|
flet/controls/core/column.py,sha256=Xjxa1JAVBB4PyZzQ8UwLwggW1oGYfGbiObr07JSgS8A,2425
|
|
79
|
-
flet/controls/core/dismissible.py,sha256=
|
|
79
|
+
flet/controls/core/dismissible.py,sha256=g9aU73tilvloZBvRTr7Q7WAmIn4zBEX8T2B0Jo-nXho,5445
|
|
80
80
|
flet/controls/core/drag_target.py,sha256=VtvBFtMrQgN8ErdF4QfVVMVms-ZhwXQwhgO5nQeDAEg,2832
|
|
81
81
|
flet/controls/core/draggable.py,sha256=tmY5muNn84JvFYMPuQlJ61dOj7bgpoCD8pYnVXlt5JE,3859
|
|
82
82
|
flet/controls/core/flet_app.py,sha256=5WvbgRiktRxAMRKiZ667o1Yt7ozfuSM811yTE6D2rfA,1116
|
|
@@ -84,7 +84,7 @@ flet/controls/core/gesture_detector.py,sha256=dcSzIiIjD7QOPVGcKDdW2MxvCdtla8M_yH
|
|
|
84
84
|
flet/controls/core/grid_view.py,sha256=s9otiOfKffHMg6u7REN6bQt9j7ykl9GIbWBZIhaYmFg,3760
|
|
85
85
|
flet/controls/core/icon.py,sha256=LVjdByVXnVjR_vxb_kJT2BMqiF7vgvp0OR-iV9LTw30,4115
|
|
86
86
|
flet/controls/core/image.py,sha256=Qbooag88pvfqUq-hzf6C-Q1awib_bT3_cOeEAGhyjDA,5455
|
|
87
|
-
flet/controls/core/interactive_viewer.py,sha256=
|
|
87
|
+
flet/controls/core/interactive_viewer.py,sha256=t76mVE29Us9wNCccZBM-RyMrHsmubumnvLf5HYxwxGk,4580
|
|
88
88
|
flet/controls/core/keyboard_listener.py,sha256=Rml7c7pHNzTyBiSbW15cUXwhr5YddTrSo98z2tzWhaI,2527
|
|
89
89
|
flet/controls/core/list_view.py,sha256=zyWHHG8Tpr4VYztQFWA_mRipLXKO6bVJ-Ra1Gso4qp4,3273
|
|
90
90
|
flet/controls/core/markdown.py,sha256=m6CE398R7uNpvNzxtRH3lS13It5-SBg79WvMToNidLo,11075
|
|
@@ -92,8 +92,8 @@ flet/controls/core/merge_semantics.py,sha256=o2olHjIDU-QNKAc8JHdQABiZUKeR4dWJApO
|
|
|
92
92
|
flet/controls/core/pagelet.py,sha256=VCcPOtlqfL-A0vnDKsUkVdKZkveFVvk5sK_8oWsESpU,4163
|
|
93
93
|
flet/controls/core/placeholder.py,sha256=XqqP1QmjlboezVKIrwZHA4FCcl06cptqxvYQs7kVkB8,992
|
|
94
94
|
flet/controls/core/reorderable_draggable.py,sha256=BOIV_-qxFQZEcbZ1gHXplDlhbqqo3gVd2zsKFY9iBLE,1038
|
|
95
|
-
flet/controls/core/responsive_row.py,sha256=
|
|
96
|
-
flet/controls/core/row.py,sha256=
|
|
95
|
+
flet/controls/core/responsive_row.py,sha256=IQUwUn1lHGlDaso0Bevna4LVpdOxwu60pKS9TaX-gy0,2374
|
|
96
|
+
flet/controls/core/row.py,sha256=riNdAC15kB7zQdSf4NRizLuNfiHF6YxT837iLNyK58U,2159
|
|
97
97
|
flet/controls/core/safe_area.py,sha256=Yf2ZWmZpGZ_xpNw16xozbc99KTXXmyXGYo-gPlC9b84,2252
|
|
98
98
|
flet/controls/core/screenshot.py,sha256=6X3f6rYaX7PHkvWM7gpFlyhA2xzt-M15ax-Nfd45n1g,1110
|
|
99
99
|
flet/controls/core/semantics.py,sha256=tiRTyFMYYNIcj8kuiopZMPGxeo_n4L7eCchHcywColI,7413
|
|
@@ -102,8 +102,8 @@ flet/controls/core/stack.py,sha256=JqCIXFcDxd4C7dhJik0qwOu7IoHRmkj7BpvF6LhM03k,1
|
|
|
102
102
|
flet/controls/core/text.py,sha256=jKl-j9Zzoj0nuxIbj-wRj4re6VLSvygvsqTwAIiMKqg,8903
|
|
103
103
|
flet/controls/core/text_span.py,sha256=-f60CaJ6H31_f6JcYLEogiwe14Lw_HdvCAccRRsANP8,2939
|
|
104
104
|
flet/controls/core/transparent_pointer.py,sha256=BGDFuDWyDUIYOmwaEgMMks6OWS_lVjZObAw2M-3r2bQ,963
|
|
105
|
-
flet/controls/core/view.py,sha256=
|
|
106
|
-
flet/controls/core/window.py,sha256=
|
|
105
|
+
flet/controls/core/view.py,sha256=J0C7VNl-qSyNlVMyCaesFFmuBFFskz9kS3-QsxqI2hc,5015
|
|
106
|
+
flet/controls/core/window.py,sha256=_WhYjRL46YjMY0Uy41bwps3d0iy1AP5JZL_aFgCCfv0,7404
|
|
107
107
|
flet/controls/core/window_drag_area.py,sha256=fH0fczp-LUN9n3XgL85tEsQzVH1F_OoWjYwq6gSIS1E,1834
|
|
108
108
|
flet/controls/core/canvas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
109
109
|
flet/controls/core/canvas/arc.py,sha256=pgZ6e2yhzx2cAbb3zBnlhwtuJR_YEyVTjo_11GAra_Q,1772
|
|
@@ -129,7 +129,7 @@ flet/controls/cupertino/cupertino_app_bar.py,sha256=CxhgW5Z_tohnyn7WkGxes9aN_KBD
|
|
|
129
129
|
flet/controls/cupertino/cupertino_bottom_sheet.py,sha256=o8154fJuBtJUSJtqJFrjE6tEBv1ylNtgDW8qn6vwSxs,938
|
|
130
130
|
flet/controls/cupertino/cupertino_button.py,sha256=0k8kVgbA7O1yEOf_t1eokKIamoQ6niahsh-IMXjVhvU,4560
|
|
131
131
|
flet/controls/cupertino/cupertino_checkbox.py,sha256=NsCpe6UxRx7c_s-tbC1th1Jsw_2Y-wSF_ohS5uCwzJU,4719
|
|
132
|
-
flet/controls/cupertino/cupertino_colors.py,sha256=
|
|
132
|
+
flet/controls/cupertino/cupertino_colors.py,sha256=9F3EEruUZW8RYDZcrbkX2OssLP3aSwXguNq6P8mUokg,5154
|
|
133
133
|
flet/controls/cupertino/cupertino_context_menu.py,sha256=TbKXLcmvm4dNVyUO0X5vH_dq2gQBpqZdhtrcpffwU1s,1503
|
|
134
134
|
flet/controls/cupertino/cupertino_context_menu_action.py,sha256=JaY38NA_S8tI2VAodlB4M2xRFXeeM9Sn4BqboDMG3HE,1427
|
|
135
135
|
flet/controls/cupertino/cupertino_date_picker.py,sha256=5Qczw4_oYox_jJoBDJlohOCizb3u5GYduSYY9zVnkk0,8456
|
|
@@ -149,7 +149,7 @@ flet/controls/cupertino/cupertino_timer_picker.py,sha256=BNS2W8hUfiozKpiUZueo1h4
|
|
|
149
149
|
flet/controls/cupertino/cupertino_tinted_button.py,sha256=SmLukUZWYU_c2roz81a1hY7x6KLYr3RaP2TKyLxVIXM,375
|
|
150
150
|
flet/controls/material/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
151
|
flet/controls/material/alert_dialog.py,sha256=_6D1a0iBDNImmExHjXzpxyGOnEA0DLk2Cj_Akl_uXio,7822
|
|
152
|
-
flet/controls/material/app_bar.py,sha256=
|
|
152
|
+
flet/controls/material/app_bar.py,sha256=hEaZLSSKcJc5WQ7BcIPhB0m5_C9CnBVOkiYiMYQsJRY,6605
|
|
153
153
|
flet/controls/material/auto_complete.py,sha256=MVesy4fUvLvY0pw_BDQXpRB5o9ac1Ci7icTdG4nC5oM,1856
|
|
154
154
|
flet/controls/material/badge.py,sha256=gWkDrqoZMIrjEreWeTaANlnzJn394Gj4vQZikuVAEIk,3365
|
|
155
155
|
flet/controls/material/banner.py,sha256=gFj9oNpPMNiAMnFNWkZiUdgGcE6T72VVVw73BeIRMvU,4512
|
|
@@ -158,17 +158,17 @@ flet/controls/material/bottom_sheet.py,sha256=TRa6RgPiz3PLnmVHnJHXp3CW2pkZbx_RQ4
|
|
|
158
158
|
flet/controls/material/button.py,sha256=8_CLLvjPO9ZXsaGkJhO1a3cVbG2Abe-40cEQcT9BPpY,4189
|
|
159
159
|
flet/controls/material/card.py,sha256=kR87buDfX_mSTOlj4HRicq2hDfIRPyigIdLlxa5Q7Fw,2872
|
|
160
160
|
flet/controls/material/checkbox.py,sha256=FUa77no8mpDI7p7wIQebiyu7ul69aMMDkychkoTxo2I,5851
|
|
161
|
-
flet/controls/material/chip.py,sha256=
|
|
162
|
-
flet/controls/material/circle_avatar.py,sha256=
|
|
161
|
+
flet/controls/material/chip.py,sha256=mR64l9UWC2OehmWChvLFhn5c1cXVLcISQJdXqi-lvAk,7812
|
|
162
|
+
flet/controls/material/circle_avatar.py,sha256=_m2vjE-RYtfwOb57P-QkxHBOpyWpkGZ7AX7Mnk61JjM,4243
|
|
163
163
|
flet/controls/material/container.py,sha256=quw_KEu7N5tbEFK7EuX39OQ4Idd0i4qa4Nu6HIeS440,6875
|
|
164
164
|
flet/controls/material/datatable.py,sha256=Rx937BudxdgModJeXImX9uXtrQAuVCiXujVmRKgkLnc,18354
|
|
165
165
|
flet/controls/material/date_picker.py,sha256=JCuU3-BcwFkb8KHQdcRQm0Scfdur7FGiMXElUX4WSxU,5336
|
|
166
166
|
flet/controls/material/date_range_picker.py,sha256=7KJKE78bQYLJRdsTKgNu9JZbmyu3xh8xQUbrgwN5HwY,5350
|
|
167
167
|
flet/controls/material/divider.py,sha256=Y7T5FYz8X0xHb137QiNMXNRwXRFEWsxLHa8P0DD0k3U,3182
|
|
168
|
-
flet/controls/material/dropdown.py,sha256=
|
|
169
|
-
flet/controls/material/dropdownm2.py,sha256=
|
|
168
|
+
flet/controls/material/dropdown.py,sha256=OswSZaxdSosDL5qgfb_3kFJaBZpTLSxr6R-ZS1JbfAQ,10154
|
|
169
|
+
flet/controls/material/dropdownm2.py,sha256=tl_YXIQFbg0824JgOUEiOUDb4z4CYFM7cpV4IbVrlyE,5679
|
|
170
170
|
flet/controls/material/elevated_button.py,sha256=AjrLkxn1ViwGE7ms8aNlNTgaR1-qIFhN8aU254Hx9Vc,274
|
|
171
|
-
flet/controls/material/expansion_panel.py,sha256=
|
|
171
|
+
flet/controls/material/expansion_panel.py,sha256=hIPBDCT3Gq7oI2UlgqjhUHjCQWvvwjjfhjRU79DFoSs,4276
|
|
172
172
|
flet/controls/material/expansion_tile.py,sha256=sEAXoc7-FkjFUEIgM5pK3LVKIpjsTxI2BSedKvC9GSU,5744
|
|
173
173
|
flet/controls/material/filled_button.py,sha256=ZtCy47Yrv2B1RyDk1pszVKiUj-YtMcLI7koTf5Bz0Mo,452
|
|
174
174
|
flet/controls/material/filled_tonal_button.py,sha256=t9zXaMvakzmHUWtPfJK1ORAd8P3O5XCPi098PYAiOCU,574
|
|
@@ -177,7 +177,7 @@ flet/controls/material/form_field_control.py,sha256=8T3wrdfJ3j9Npz_A90TjJSFOzuVu
|
|
|
177
177
|
flet/controls/material/icon_button.py,sha256=ZmOmOtk7fv1B2gWOvf0yTvwxxRdI7UDl5YsNLsEzLNA,7788
|
|
178
178
|
flet/controls/material/icons.py,sha256=dsBk2nwUW3SQjwpzPv8G53ILP_zCg7tJocylHQLC-RU,287261
|
|
179
179
|
flet/controls/material/list_tile.py,sha256=RIBO8ibubZjnGyWV4iTw7FOhMVNJM6jImoUYumAvjfw,8061
|
|
180
|
-
flet/controls/material/menu_bar.py,sha256=
|
|
180
|
+
flet/controls/material/menu_bar.py,sha256=78RmnKy9npkdcp8QYqp4kHqXnVHaZWkRNqEURJISGZg,2250
|
|
181
181
|
flet/controls/material/menu_item_button.py,sha256=ICiTw3FMCTL7maI04KggHOcuxEOEHLPxAU08D_XVVxY,2523
|
|
182
182
|
flet/controls/material/navigation_bar.py,sha256=HzSiMT6P6bgkxz-d1iWxRNACMuOqnPKi2qbLBmp7BCg,4998
|
|
183
183
|
flet/controls/material/navigation_drawer.py,sha256=_Wraal9cxMqyXUbDC26wMEUWlWu0pVT7V28DR-MCoQE,3794
|
|
@@ -194,10 +194,10 @@ flet/controls/material/search_bar.py,sha256=hoeZxdTG4vqCqgWlRBaJi-iGenDOpIpedHrU
|
|
|
194
194
|
flet/controls/material/segmented_button.py,sha256=f01DPN_QbUvzGS8tEilASVI6VFQwURDZ-uy2en_0U74,5510
|
|
195
195
|
flet/controls/material/selection_area.py,sha256=KYjMBMuuSKmi6sKBl0UZgZurBOeJMbgNazi-jsR1KU4,1032
|
|
196
196
|
flet/controls/material/slider.py,sha256=zV0Jres_HPwP590kNe663GeML9gIx4U24W_R7BpCV6o,6952
|
|
197
|
-
flet/controls/material/snack_bar.py,sha256=
|
|
197
|
+
flet/controls/material/snack_bar.py,sha256=8X3P_TgHBAWafMzaC6NskPey2_k-JeheL29PrgxAVYc,7374
|
|
198
198
|
flet/controls/material/submenu_button.py,sha256=4iQvOPTNRjNwXx3in8FWqBFKW6Mt22awwAhL8HiWd_I,2683
|
|
199
199
|
flet/controls/material/switch.py,sha256=EaeAF1qDQfzmHz_uLzQTurc5vKUXXYuCSmoKdXjmQCg,6892
|
|
200
|
-
flet/controls/material/tabs.py,sha256=
|
|
200
|
+
flet/controls/material/tabs.py,sha256=WIGsEs6lpw3LwqWsgIAJ4a0PpWKgLVOKkZRKfarnNY4,18565
|
|
201
201
|
flet/controls/material/text_button.py,sha256=Mkvz4LIl0yH1-e0ekOjPD6z8CZ5ZUIyE00zcb7sLKns,2578
|
|
202
202
|
flet/controls/material/textfield.py,sha256=_JrdBKfVwwSeROm3Yh-0u2TsuovYcW7P8nQevIP7g2I,11816
|
|
203
203
|
flet/controls/material/time_picker.py,sha256=_gUTaQi4N-mo1Oj_yJEsti8ToM0WhwhofbCjP5v2gzA,3070
|
|
@@ -211,7 +211,7 @@ flet/controls/services/haptic_feedback.py,sha256=JZMveq3loC3CWt3LPp87iWl6IeAzyUO
|
|
|
211
211
|
flet/controls/services/semantics_service.py,sha256=eF_EcVqOMsgUyyZYhKTNLP-PcFTX0a8NQsQkAU-jxyk,1662
|
|
212
212
|
flet/controls/services/service.py,sha256=1k3PGJxkJOub5Eb9SIjrRo2-Ik_xrmERQD0TfxjHYC0,378
|
|
213
213
|
flet/controls/services/shake_detector.py,sha256=A9o5Z89lBUL7j6OhhMWv3Qna2O_ke1h3R1AFwKgmMwk,895
|
|
214
|
-
flet/controls/services/shared_preferences.py,sha256=
|
|
214
|
+
flet/controls/services/shared_preferences.py,sha256=ec_dMBMozfAalyw1exdXd9ayDY7g08oC-oE8JkqU-PE,994
|
|
215
215
|
flet/controls/services/storage_paths.py,sha256=q6ykCW33IeMhvMQKAWaXZ8HKzsfdUpHGWAC52SM2NAQ,7800
|
|
216
216
|
flet/controls/services/url_launcher.py,sha256=YfvNGaivvwJ2vrSkxwgQ2R1l3A5wbgY6AxX8n2Fe02U,2735
|
|
217
217
|
flet/fastapi/__init__.py,sha256=crLmmKE-B-O-cm5MTlXFreYCUnqkw6mK4eIPUUMvSCM,45
|
|
@@ -223,11 +223,11 @@ flet/messaging/session.py,sha256=RQkYkZDIKW-l9ShUvbYKPD6ZXgfD4yVz2WERgUnp_OA,123
|
|
|
223
223
|
flet/messaging/session_store.py,sha256=80yy3fjEGJs_60UxS_o2tXl2QCenFb9IVDaJCK8wckY,557
|
|
224
224
|
flet/pubsub/__init__.py,sha256=qWcHYUa7oQEKysceGCeYG2AgIe0IO18NRXiP47jb_6o,126
|
|
225
225
|
flet/pubsub/pubsub_client.py,sha256=Wamm3T_md2ObOu5odN5-bPuMgt9Si8YvbYhSC2TtAIA,1245
|
|
226
|
-
flet/pubsub/pubsub_hub.py,sha256=
|
|
226
|
+
flet/pubsub/pubsub_hub.py,sha256=7fEHZP9vON5LKt6hzg38EcyOtfyHwyJGG3NUynNe2LQ,6546
|
|
227
227
|
flet/security/__init__.py,sha256=LcBftVee6pXMB2MiDsc0PPUXnTlR2CT53VAPiPadaHI,2189
|
|
228
228
|
flet/testing/__init__.py,sha256=Yb9e6h11b2hV7O3TuqsJ7zwFAgNcbB7tY7Gp2ssxtN4,176
|
|
229
229
|
flet/testing/finder.py,sha256=Rqv4qwjMcVx4ZYAJgZgGT2GVH5OR4ZgoQeKj5ZsFsRc,346
|
|
230
|
-
flet/testing/flet_test_app.py,sha256=
|
|
230
|
+
flet/testing/flet_test_app.py,sha256=adDF_CPo9nWXyGxllYVDRt4skq7yfNQoqI2RpFZUTcQ,16580
|
|
231
231
|
flet/testing/tester.py,sha256=_DSRFQQoGISve5JR2nq3AdSbUf18E6FfG3ytRD5tAfo,4946
|
|
232
232
|
flet/utils/__init__.py,sha256=LVgyCBf1VNqGXkdtf1JCP20Rx2oaPITF4nAGw2zquVI,1739
|
|
233
233
|
flet/utils/browser.py,sha256=Z2PomJjClBXRRiPvGP7WRzbguvXQ8W2HQAzd_A5cmvE,157
|
|
@@ -241,13 +241,13 @@ flet/utils/locks.py,sha256=pWx3QKhIUIx_ZWCXN-30M6u0jZeuLxVCChUJE7OPQu8,219
|
|
|
241
241
|
flet/utils/network.py,sha256=eP_ChGF3GSBhQ8JehDDdlbMBFoIPyVdHoJZ4l3RdMJ0,437
|
|
242
242
|
flet/utils/object_model.py,sha256=OC0i5CXYQ4DsVsIKP4KpnYBE5hvWlPIi_SrypFPtBXw,2667
|
|
243
243
|
flet/utils/once.py,sha256=SsQ2mMm6NVrfr7Cd6jhKY9zVvCS6eGm4qkKSJT63occ,347
|
|
244
|
-
flet/utils/pip.py,sha256=
|
|
244
|
+
flet/utils/pip.py,sha256=cPa4ItpVJeke1pr8HfE8w00FloHPCKoOdlQtwVHw4kk,1773
|
|
245
245
|
flet/utils/platform_utils.py,sha256=U4cqV3EPi5QNYjbhfZmtk41-KMtI_P7KvVdnZzMOgJA,1927
|
|
246
246
|
flet/utils/slugify.py,sha256=e-lsoDc2_dk5jQnySaHCU83AA4O6mguEgCEdk2smW2Y,466
|
|
247
247
|
flet/utils/strings.py,sha256=R63_i7PdSAStCDPJ-O_WHBt3H02JQ14GSbnjLIpPTUc,178
|
|
248
248
|
flet/utils/vector.py,sha256=pYZzjldBWCZbSeSkZ8VmujwcZC7VBWk1NLBPA-2th3U,3207
|
|
249
|
-
flet-0.70.0.
|
|
250
|
-
flet-0.70.0.
|
|
251
|
-
flet-0.70.0.
|
|
252
|
-
flet-0.70.0.
|
|
253
|
-
flet-0.70.0.
|
|
249
|
+
flet-0.70.0.dev6370.dist-info/METADATA,sha256=u9p6dNcRA2r0bUV9wWwDITiJtju60zql11_kt2JL7R4,6109
|
|
250
|
+
flet-0.70.0.dev6370.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
251
|
+
flet-0.70.0.dev6370.dist-info/entry_points.txt,sha256=mbBhHNUnLHiDqR36WeJrfLJU0Y0y087-M4wagQmaQ_Y,39
|
|
252
|
+
flet-0.70.0.dev6370.dist-info/top_level.txt,sha256=HbLrSnWJX2jZOEZAI14cGzW8Q5BbOGTtE-7knD5FDh0,5
|
|
253
|
+
flet-0.70.0.dev6370.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|