flet 0.82.3.dev7877__tar.gz → 0.82.3.dev7883__tar.gz

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.
Files changed (301) hide show
  1. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/PKG-INFO +9 -9
  2. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/pyproject.toml +9 -9
  3. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/__init__.py +6 -1
  4. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/authorization_service.py +1 -1
  5. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/expansion_panel.py +66 -19
  6. flet-0.82.3.dev7883/src/flet/controls/services/shared_preferences.py +104 -0
  7. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/version.py +1 -1
  8. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/PKG-INFO +9 -9
  9. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/requires.txt +8 -8
  10. flet-0.82.3.dev7877/src/flet/controls/services/shared_preferences.py +0 -51
  11. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/README.md +0 -0
  12. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/setup.cfg +0 -0
  13. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/app.py +0 -0
  14. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/__init__.py +0 -0
  15. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/authorization.py +0 -0
  16. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/group.py +0 -0
  17. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/oauth_provider.py +0 -0
  18. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/oauth_token.py +0 -0
  19. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/providers/__init__.py +0 -0
  20. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
  21. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
  22. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/providers/github_oauth_provider.py +0 -0
  23. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/providers/google_oauth_provider.py +0 -0
  24. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/auth/user.py +0 -0
  25. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/canvas/__init__.py +0 -0
  26. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/cli.py +0 -0
  27. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/__init__.py +0 -0
  28. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/component.py +0 -0
  29. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/component_decorator.py +0 -0
  30. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/component_owned.py +0 -0
  31. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/__init__.py +0 -0
  32. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/hook.py +0 -0
  33. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_callback.py +0 -0
  34. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_context.py +0 -0
  35. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_effect.py +0 -0
  36. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_memo.py +0 -0
  37. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_ref.py +0 -0
  38. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/hooks/use_state.py +0 -0
  39. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/memo.py +0 -0
  40. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/observable.py +0 -0
  41. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/public_utils.py +0 -0
  42. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/components/utils.py +0 -0
  43. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/__init__.py +0 -0
  44. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/adaptive_control.py +0 -0
  45. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/alignment.py +0 -0
  46. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/animation.py +0 -0
  47. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/base_control.py +0 -0
  48. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/base_page.py +0 -0
  49. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/blur.py +0 -0
  50. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/border.py +0 -0
  51. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/border_radius.py +0 -0
  52. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/box.py +0 -0
  53. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/buttons.py +0 -0
  54. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/colors.py +0 -0
  55. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/context.py +0 -0
  56. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/control.py +0 -0
  57. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/control_event.py +0 -0
  58. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/control_state.py +0 -0
  59. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/__init__.py +0 -0
  60. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/animated_switcher.py +0 -0
  61. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/autofill_group.py +0 -0
  62. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/__init__.py +0 -0
  63. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/arc.py +0 -0
  64. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/canvas.py +0 -0
  65. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/circle.py +0 -0
  66. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/color.py +0 -0
  67. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/fill.py +0 -0
  68. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/image.py +0 -0
  69. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/line.py +0 -0
  70. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/oval.py +0 -0
  71. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/path.py +0 -0
  72. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/points.py +0 -0
  73. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/rect.py +0 -0
  74. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/shadow.py +0 -0
  75. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/shape.py +0 -0
  76. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/canvas/text.py +0 -0
  77. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/column.py +0 -0
  78. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/dismissible.py +0 -0
  79. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/drag_target.py +0 -0
  80. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/draggable.py +0 -0
  81. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/flet_app.py +0 -0
  82. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/gesture_detector.py +0 -0
  83. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/grid_view.py +0 -0
  84. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/hero.py +0 -0
  85. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/icon.py +0 -0
  86. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/image.py +0 -0
  87. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/interactive_viewer.py +0 -0
  88. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/keyboard_listener.py +0 -0
  89. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/list_view.py +0 -0
  90. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/markdown.py +0 -0
  91. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/merge_semantics.py +0 -0
  92. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/page_view.py +0 -0
  93. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/pagelet.py +0 -0
  94. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/placeholder.py +0 -0
  95. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/reorderable_drag_handle.py +0 -0
  96. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/responsive_row.py +0 -0
  97. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/rotated_box.py +0 -0
  98. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/row.py +0 -0
  99. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/safe_area.py +0 -0
  100. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/screenshot.py +0 -0
  101. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/semantics.py +0 -0
  102. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/shader_mask.py +0 -0
  103. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/shimmer.py +0 -0
  104. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/stack.py +0 -0
  105. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/text.py +0 -0
  106. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/text_span.py +0 -0
  107. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/transparent_pointer.py +0 -0
  108. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/view.py +0 -0
  109. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/window.py +0 -0
  110. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/core/window_drag_area.py +0 -0
  111. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/__init__.py +0 -0
  112. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
  113. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
  114. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
  115. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
  116. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
  117. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
  118. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_button.py +0 -0
  119. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
  120. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
  121. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
  122. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
  123. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
  124. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
  125. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
  126. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_icons.json +0 -0
  127. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
  128. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_icons.pyi +0 -0
  129. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
  130. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
  131. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
  132. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
  133. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
  134. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
  135. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
  136. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
  137. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
  138. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
  139. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
  140. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/device_info.py +0 -0
  141. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/dialog_control.py +0 -0
  142. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/duration.py +0 -0
  143. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/embed_json_encoder.py +0 -0
  144. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/events.py +0 -0
  145. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/exceptions.py +0 -0
  146. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/geometry.py +0 -0
  147. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/gradients.py +0 -0
  148. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/icon_data.py +0 -0
  149. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/id_counter.py +0 -0
  150. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/keys.py +0 -0
  151. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/layout_control.py +0 -0
  152. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/margin.py +0 -0
  153. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/__init__.py +0 -0
  154. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/alert_dialog.py +0 -0
  155. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/app_bar.py +0 -0
  156. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/auto_complete.py +0 -0
  157. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/badge.py +0 -0
  158. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/banner.py +0 -0
  159. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/bottom_app_bar.py +0 -0
  160. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/bottom_sheet.py +0 -0
  161. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/button.py +0 -0
  162. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/card.py +0 -0
  163. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/checkbox.py +0 -0
  164. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/chip.py +0 -0
  165. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/circle_avatar.py +0 -0
  166. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/container.py +0 -0
  167. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/context_menu.py +0 -0
  168. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/datatable.py +0 -0
  169. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/date_picker.py +0 -0
  170. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/date_range_picker.py +0 -0
  171. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/divider.py +0 -0
  172. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/dropdown.py +0 -0
  173. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/dropdownm2.py +0 -0
  174. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/elevated_button.py +0 -0
  175. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/expansion_tile.py +0 -0
  176. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/filled_button.py +0 -0
  177. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/filled_tonal_button.py +0 -0
  178. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/floating_action_button.py +0 -0
  179. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/form_field_control.py +0 -0
  180. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/icon_button.py +0 -0
  181. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/icons.json +0 -0
  182. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/icons.py +0 -0
  183. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/icons.pyi +0 -0
  184. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/list_tile.py +0 -0
  185. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/menu_bar.py +0 -0
  186. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/menu_item_button.py +0 -0
  187. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/navigation_bar.py +0 -0
  188. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/navigation_drawer.py +0 -0
  189. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/navigation_rail.py +0 -0
  190. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/outlined_button.py +0 -0
  191. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/popup_menu_button.py +0 -0
  192. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/progress_bar.py +0 -0
  193. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/progress_ring.py +0 -0
  194. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/radio.py +0 -0
  195. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/radio_group.py +0 -0
  196. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/range_slider.py +0 -0
  197. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/reorderable_list_view.py +0 -0
  198. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/search_bar.py +0 -0
  199. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/segmented_button.py +0 -0
  200. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/selection_area.py +0 -0
  201. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/slider.py +0 -0
  202. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/snack_bar.py +0 -0
  203. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/submenu_button.py +0 -0
  204. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/switch.py +0 -0
  205. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/tabs.py +0 -0
  206. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/text_button.py +0 -0
  207. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/textfield.py +0 -0
  208. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/time_picker.py +0 -0
  209. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/tooltip.py +0 -0
  210. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/material/vertical_divider.py +0 -0
  211. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/multi_view.py +0 -0
  212. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/object_patch.py +0 -0
  213. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/padding.py +0 -0
  214. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/page.py +0 -0
  215. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/painting.py +0 -0
  216. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/query_string.py +0 -0
  217. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/ref.py +0 -0
  218. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/scrollable_control.py +0 -0
  219. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/__init__.py +0 -0
  220. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/accelerometer.py +0 -0
  221. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/barometer.py +0 -0
  222. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/battery.py +0 -0
  223. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/browser_context_menu.py +0 -0
  224. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/clipboard.py +0 -0
  225. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/connectivity.py +0 -0
  226. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/file_picker.py +0 -0
  227. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/gyroscope.py +0 -0
  228. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/haptic_feedback.py +0 -0
  229. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/magnetometer.py +0 -0
  230. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/screen_brightness.py +0 -0
  231. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/semantics_service.py +0 -0
  232. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/sensor_error_event.py +0 -0
  233. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/service.py +0 -0
  234. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/shake_detector.py +0 -0
  235. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/share.py +0 -0
  236. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/storage_paths.py +0 -0
  237. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/url_launcher.py +0 -0
  238. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/user_accelerometer.py +0 -0
  239. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/services/wakelock.py +0 -0
  240. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/template_route.py +0 -0
  241. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/text_style.py +0 -0
  242. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/theme.py +0 -0
  243. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/transform.py +0 -0
  244. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/controls/types.py +0 -0
  245. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/fastapi/__init__.py +0 -0
  246. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/connection.py +0 -0
  247. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/flet_socket_server.py +0 -0
  248. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/protocol.py +0 -0
  249. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/pyodide_connection.py +0 -0
  250. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/session.py +0 -0
  251. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/messaging/session_store.py +0 -0
  252. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/pubsub/__init__.py +0 -0
  253. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/pubsub/pubsub_client.py +0 -0
  254. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/pubsub/pubsub_hub.py +0 -0
  255. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/py.typed +0 -0
  256. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/security/__init__.py +0 -0
  257. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/testing/__init__.py +0 -0
  258. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/testing/finder.py +0 -0
  259. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/testing/flet_test_app.py +0 -0
  260. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/testing/tester.py +0 -0
  261. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/__init__.py +0 -0
  262. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/browser.py +0 -0
  263. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/classproperty.py +0 -0
  264. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/deprecated.py +0 -0
  265. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/deprecated_enum.py +0 -0
  266. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/files.py +0 -0
  267. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/from_dict.py +0 -0
  268. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/hashing.py +0 -0
  269. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/json_utils.py +0 -0
  270. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/locks.py +0 -0
  271. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/network.py +0 -0
  272. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/object_model.py +0 -0
  273. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/once.py +0 -0
  274. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/pip.py +0 -0
  275. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/platform_utils.py +0 -0
  276. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/slugify.py +0 -0
  277. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/strings.py +0 -0
  278. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/typing_utils.py +0 -0
  279. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet/utils/vector.py +0 -0
  280. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/SOURCES.txt +0 -0
  281. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/dependency_links.txt +0 -0
  282. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/entry_points.txt +0 -0
  283. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/src/flet.egg-info/top_level.txt +0 -0
  284. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_auth_lazy_imports.py +0 -0
  285. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_base_control.py +0 -0
  286. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_colors.py +0 -0
  287. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_component_effects.py +0 -0
  288. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_component_renderer.py +0 -0
  289. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_dataclasses.py +0 -0
  290. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_datetime.py +0 -0
  291. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_events.py +0 -0
  292. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_from_dict.py +0 -0
  293. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_icons.py +0 -0
  294. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_object_diff_frozen.py +0 -0
  295. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_object_diff_in_place.py +0 -0
  296. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_object_diff_memory_churn.py +0 -0
  297. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_object_diff_performance.py +0 -0
  298. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_observable.py +0 -0
  299. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_patch_dataclass.py +0 -0
  300. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_session_disconnect_buffering.py +0 -0
  301. {flet-0.82.3.dev7877 → flet-0.82.3.dev7883}/tests/test_skip_double_update.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.82.3.dev7877
3
+ Version: 0.82.3.dev7883
4
4
  Summary: Flet for Python - easily build interactive multi-platform apps in Python
5
5
  Author-email: "Appveyor Systems Inc." <hello@flet.dev>
6
6
  License-Expression: Apache-2.0
@@ -9,23 +9,23 @@ Project-URL: Repository, https://github.com/flet-dev/flet
9
9
  Project-URL: Documentation, https://docs.flet.dev/
10
10
  Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
13
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
12
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "cli"
13
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "web"
14
14
  Requires-Dist: oauthlib>=3.2.2; platform_system != "Pyodide"
15
15
  Requires-Dist: httpx>=0.28.1; platform_system != "Pyodide"
16
16
  Requires-Dist: repath>=0.9.0
17
17
  Requires-Dist: msgpack>=1.1.0
18
18
  Requires-Dist: typing-extensions; python_version < "3.11"
19
19
  Provides-Extra: all
20
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "all"
21
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "all"
22
- Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "all"
20
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "all"
21
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "all"
22
+ Requires-Dist: flet-desktop==0.82.3.dev7883; extra == "all"
23
23
  Provides-Extra: cli
24
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
24
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "cli"
25
25
  Provides-Extra: desktop
26
- Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "desktop"
26
+ Requires-Dist: flet-desktop==0.82.3.dev7883; extra == "desktop"
27
27
  Provides-Extra: web
28
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
28
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "web"
29
29
 
30
30
  <p align="center">
31
31
  <a href="https://flet.dev"><img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo"></a>
@@ -1,14 +1,14 @@
1
1
  [project]
2
2
  name = "flet"
3
- version = "0.82.3.dev7877"
3
+ version = "0.82.3.dev7883"
4
4
  description = "Flet for Python - easily build interactive multi-platform apps in Python"
5
5
  authors = [{name = "Appveyor Systems Inc.", email = "hello@flet.dev"}]
6
6
  license = "Apache-2.0"
7
7
  readme = "README.md"
8
8
  requires-python = ">=3.10"
9
9
  dependencies = [
10
- "flet-cli==0.82.3.dev7877; extra == 'cli'",
11
- "flet-web==0.82.3.dev7877; extra == 'web'",
10
+ "flet-cli==0.82.3.dev7883; extra == 'cli'",
11
+ "flet-web==0.82.3.dev7883; extra == 'web'",
12
12
  "oauthlib >=3.2.2; platform_system != 'Pyodide'",
13
13
  "httpx >=0.28.1; platform_system != 'Pyodide'",
14
14
  "repath >=0.9.0",
@@ -23,15 +23,15 @@ Documentation = "https://docs.flet.dev/"
23
23
 
24
24
  [project.optional-dependencies]
25
25
  all = [
26
- "flet-cli==0.82.3.dev7877",
27
- "flet-web==0.82.3.dev7877",
28
- "flet-desktop==0.82.3.dev7877",
26
+ "flet-cli==0.82.3.dev7883",
27
+ "flet-web==0.82.3.dev7883",
28
+ "flet-desktop==0.82.3.dev7883",
29
29
  ]
30
- cli = ["flet-cli==0.82.3.dev7877"]
30
+ cli = ["flet-cli==0.82.3.dev7883"]
31
31
  desktop = [
32
- "flet-desktop==0.82.3.dev7877",
32
+ "flet-desktop==0.82.3.dev7883",
33
33
  ]
34
- web = ["flet-web==0.82.3.dev7877"]
34
+ web = ["flet-web==0.82.3.dev7883"]
35
35
 
36
36
  [project.scripts]
37
37
  flet = "flet.cli:main"
@@ -304,7 +304,11 @@ from flet.controls.material.divider import Divider
304
304
  from flet.controls.material.dropdown import Dropdown, DropdownOption
305
305
  from flet.controls.material.dropdownm2 import DropdownM2
306
306
  from flet.controls.material.elevated_button import ElevatedButton
307
- from flet.controls.material.expansion_panel import ExpansionPanel, ExpansionPanelList
307
+ from flet.controls.material.expansion_panel import (
308
+ ExpansionPanel,
309
+ ExpansionPanelList,
310
+ ExpansionPanelListChangeEvent,
311
+ )
308
312
  from flet.controls.material.expansion_tile import ExpansionTile, TileAffinity
309
313
  from flet.controls.material.filled_button import FilledButton
310
314
  from flet.controls.material.filled_tonal_button import FilledTonalButton
@@ -775,6 +779,7 @@ __all__ = [
775
779
  "EventHandler",
776
780
  "ExpansionPanel",
777
781
  "ExpansionPanelList",
782
+ "ExpansionPanelListChangeEvent",
778
783
  "ExpansionTile",
779
784
  "ExpansionTileTheme",
780
785
  "FilePicker",
@@ -72,7 +72,7 @@ class AuthorizationService(Authorization):
72
72
  await self.__refresh_token()
73
73
  await self.__fetch_user_and_groups()
74
74
 
75
- async def get_token(self):
75
+ async def get_token(self) -> Optional[OAuthToken]:
76
76
  """
77
77
  Return current token after applying refresh logic when required.
78
78
 
@@ -1,18 +1,46 @@
1
- from dataclasses import field
1
+ from dataclasses import dataclass, field
2
2
  from typing import Optional
3
3
 
4
4
  from flet.controls.adaptive_control import AdaptiveControl
5
5
  from flet.controls.base_control import control
6
6
  from flet.controls.control import Control
7
- from flet.controls.control_event import ControlEventHandler
7
+ from flet.controls.control_event import (
8
+ Event,
9
+ EventHandler,
10
+ )
8
11
  from flet.controls.layout_control import LayoutControl
9
12
  from flet.controls.padding import Padding, PaddingValue
13
+ from flet.controls.scrollable_control import ScrollableControl
10
14
  from flet.controls.types import (
11
15
  ColorValue,
12
16
  Number,
13
17
  )
14
18
 
15
- __all__ = ["ExpansionPanel", "ExpansionPanelList"]
19
+ __all__ = ["ExpansionPanel", "ExpansionPanelList", "ExpansionPanelListChangeEvent"]
20
+
21
+
22
+ @dataclass
23
+ class ExpansionPanelListChangeEvent(Event["ExpansionPanelList"]):
24
+ """
25
+ Payload for [`ExpansionPanelList.on_change`][flet.] event.
26
+ """
27
+
28
+ index: int
29
+ """
30
+ The index of the panel in [`ExpansionPanelList.controls`][flet.] that was toggled.
31
+
32
+ Panels with [`visible`][flet.Control.] set to `False` are not counted/indexed.
33
+ This means the value may differ from the panel's position in the original
34
+ [`ExpansionPanelList.controls`][flet.] list when some panels are invisible.
35
+ To map it back, filter [`ExpansionPanelList.controls`][flet.] to only visible
36
+ panels and use this index on that filtered list.
37
+ """
38
+
39
+ expanded: bool
40
+ """
41
+ Whether the toggled panel is expanded (`True`) or
42
+ collapsed (`False`) after the event.
43
+ """
16
44
 
17
45
 
18
46
  @control("ExpansionPanel")
@@ -21,6 +49,7 @@ class ExpansionPanel(LayoutControl, AdaptiveControl):
21
49
  A material expansion panel. It can either be expanded or collapsed. Its body is \
22
50
  only visible when it is expanded.
23
51
 
52
+ Example:
24
53
  ```python
25
54
  ft.ExpansionPanelList(
26
55
  width=400,
@@ -41,54 +70,75 @@ class ExpansionPanel(LayoutControl, AdaptiveControl):
41
70
 
42
71
  header: Optional[Control] = None
43
72
  """
44
- The control to be found in the header of the `ExpansionPanel`. If `can_tap_header` \
45
- is `True`, tapping on the header will expand or collapse the panel.
73
+ The control to be found in the header of this panel.
46
74
 
47
- If this property is `None`, the `ExpansionPanel` will have a placeholder `Text` as
75
+ It is always visible, regardless of whether this panel is expanded or collapsed.
76
+ If [`can_tap_header`][(c).] is `True`, tapping on this `header` will expand or
77
+ collapse this panel.
78
+
79
+ If this property is `None`, this panel will have a placeholder `Text` as
48
80
  header.
49
81
  """
50
82
 
51
83
  content: Optional[Control] = None
52
84
  """
53
- The control to be found in the body of the `ExpansionPanel`. It is displayed below \
54
- the `header` when the panel is expanded.
85
+ The control to be found in the body of this panel.
86
+
87
+ It is displayed below the [`header`][(c).] when this panel is [`expanded`][(c).].
55
88
 
56
- If this property is `None`, the `ExpansionPanel` will have a placeholder `Text` as
89
+ If this property is `None`, this panel will have a placeholder `Text` as
57
90
  content.
58
91
  """
59
92
 
60
93
  bgcolor: Optional[ColorValue] = None
61
94
  """
62
- The background color of the panel.
95
+ The background color of this panel.
63
96
  """
64
97
 
65
98
  expanded: bool = False
66
99
  """
67
- Whether expanded(`True`) or collapsed(`False`).
100
+ Whether this panel is in expanded (`True`) or collapsed (`False`) state.
68
101
  """
69
102
 
70
103
  can_tap_header: bool = False
71
104
  """
72
- If `True`, tapping on the panel's `header` will expand or collapse it.
105
+ Whether tapping on this panel's [`header`][(c).] will expand or collapse it.
73
106
  """
74
107
 
75
108
  splash_color: Optional[ColorValue] = None
76
109
  """
77
- TBD
110
+ Defines the splash color of this panel if [`can_tap_header`][(c).] is `True`, \
111
+ or the splash color of the expand/collapse `IconButton` if \
112
+ [`can_tap_header`][(c).] is `False`.
113
+
114
+ If [`can_tap_header`][(c).] is `False`, and [`Theme.use_material3`][flet.] is
115
+ `True`, this field will be ignored, as [`IconButton.splash_color`][flet.]
116
+ will be ignored, and you should use [`highlight_color`][(c).] instead.
117
+
118
+ If this is `None`, then the icon button will use its default splash color
119
+ [`Theme.splash_color`][flet.], and this panel will use its default splash color
120
+ [`Theme.splash_color`][flet.] (if [`can_tap_header`][(c).] is `True`).
78
121
  """
79
122
 
80
123
  highlight_color: Optional[ColorValue] = None
81
124
  """
82
- TBD
125
+ Defines the highlight color of this panel if [`can_tap_header`][(c).] is `True`, \
126
+ or the highlight color of the expand/collapse `IconButton` \
127
+ if [`can_tap_header`][(c).] is `False`.
128
+
129
+ If this is `None`, then the icon button will use its default highlight color
130
+ [`Theme.highlight_color`][flet.], and this panel will use its default highlight
131
+ color [`Theme.highlight_color`][flet.] (if [`can_tap_header`][(c).] is `True`).
83
132
  """
84
133
 
85
134
 
86
135
  @control("ExpansionPanelList")
87
- class ExpansionPanelList(LayoutControl):
136
+ class ExpansionPanelList(LayoutControl, ScrollableControl):
88
137
  """
89
138
  A material expansion panel list that lays out its children and animates \
90
139
  expansions.
91
140
 
141
+ Example:
92
142
  ```python
93
143
  ft.ExpansionPanelList(
94
144
  width=400,
@@ -145,12 +195,9 @@ class ExpansionPanelList(LayoutControl):
145
195
  The size of the gap between the [`controls`][(c).]s when expanded.
146
196
  """
147
197
 
148
- on_change: Optional[ControlEventHandler["ExpansionPanelList"]] = None
198
+ on_change: Optional[EventHandler[ExpansionPanelListChangeEvent]] = None
149
199
  """
150
200
  Called when an item of [`controls`][(c).] is expanded or collapsed.
151
-
152
- The [`data`][flet.Event.] property of the event handler argument contains the
153
- index of the child panel (in [`controls`][(c).]) which triggered this event.
154
201
  """
155
202
 
156
203
  def before_update(self):
@@ -0,0 +1,104 @@
1
+ from typing import Optional, TypeAlias, Union
2
+
3
+ from flet.controls.base_control import control
4
+ from flet.controls.services.service import Service
5
+
6
+ __all__ = ["SharedPreferences", "SharedPreferencesValueType"]
7
+
8
+ SharedPreferencesValueType: TypeAlias = Union[str, int, float, bool, list[str]]
9
+ """Supported types for [`SharedPreferences`][flet.] values."""
10
+
11
+
12
+ @control("SharedPreferences")
13
+ class SharedPreferences(Service):
14
+ """
15
+ Provides access to persistent key-value storage.
16
+ """
17
+
18
+ async def set(self, key: str, value: SharedPreferencesValueType) -> bool:
19
+ """
20
+ Sets a value for the given key.
21
+
22
+ Note:
23
+ Due to limitations on Android, it is not possible to set values that start
24
+ with any of the following: `VGhpcyBpcyB0aGUgcHJlZml4IGZvciBhIGxpc3Qu`,
25
+ `VGhpcyBpcyB0aGUgcHJlZml4IGZvciBCaWdJbnRlZ2Vy`, and
26
+ `VGhpcyBpcyB0aGUgcHJlZml4IGZvciBEb3VibGUu`.
27
+
28
+ Args:
29
+ key: The key to store the value under.
30
+ value: The value to store.
31
+
32
+ Returns:
33
+ `True` if the value was set successfully, `False` otherwise.
34
+
35
+ Raises:
36
+ ValueError: If `value` is of an unsupported type
37
+ (`str`, `int`, `float`, `bool`, and `list[str]`).
38
+ """
39
+ if not (
40
+ isinstance(value, (str, int, float, bool))
41
+ or (isinstance(value, list) and all(isinstance(x, str) for x in value))
42
+ ):
43
+ raise ValueError(
44
+ f"Unsupported value type: {type(value)}. "
45
+ "Supported types are: str, int, float, bool, list[str]."
46
+ )
47
+ return await self._invoke_method("set", {"key": key, "value": value})
48
+
49
+ async def get(self, key: str) -> Optional[SharedPreferencesValueType]:
50
+ """
51
+ Gets the value for the given key.
52
+
53
+ Args:
54
+ key: The key to retrieve the value for.
55
+
56
+ Returns:
57
+ The value for the given key, or `None` if the key doesn't exist.
58
+ """
59
+ return await self._invoke_method("get", {"key": key})
60
+
61
+ async def contains_key(self, key: str) -> bool:
62
+ """
63
+ Checks if the given key exists.
64
+
65
+ Args:
66
+ key: The key to check for existence.
67
+
68
+ Returns:
69
+ `True` if the key exists, `False` otherwise.
70
+ """
71
+ return await self._invoke_method("contains_key", {"key": key})
72
+
73
+ async def remove(self, key: str) -> bool:
74
+ """
75
+ Removes the value for the given key.
76
+
77
+ Args:
78
+ key: The key to remove.
79
+
80
+ Returns:
81
+ `True` if the key was removed, `False` if the key didn't exist.
82
+ """
83
+ return await self._invoke_method("remove", {"key": key})
84
+
85
+ async def get_keys(self, key_prefix: str) -> list[str]:
86
+ """
87
+ Gets all keys with the given prefix.
88
+
89
+ Args:
90
+ key_prefix: The prefix to filter keys by.
91
+
92
+ Returns:
93
+ A list of keys that start with the given prefix.
94
+ """
95
+ return await self._invoke_method("get_keys", {"key_prefix": key_prefix})
96
+
97
+ async def clear(self) -> bool:
98
+ """
99
+ Clears all keys and values.
100
+
101
+ Returns:
102
+ `True` if the preferences were cleared successfully, `False` otherwise.
103
+ """
104
+ return await self._invoke_method("clear")
@@ -16,7 +16,7 @@ __all__ = [
16
16
  ]
17
17
 
18
18
  # set by CI
19
- flet_version = "0.82.3.dev7877"
19
+ flet_version = "0.82.3.dev7883"
20
20
  """
21
21
  The Flet version in use.
22
22
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.82.3.dev7877
3
+ Version: 0.82.3.dev7883
4
4
  Summary: Flet for Python - easily build interactive multi-platform apps in Python
5
5
  Author-email: "Appveyor Systems Inc." <hello@flet.dev>
6
6
  License-Expression: Apache-2.0
@@ -9,23 +9,23 @@ Project-URL: Repository, https://github.com/flet-dev/flet
9
9
  Project-URL: Documentation, https://docs.flet.dev/
10
10
  Requires-Python: >=3.10
11
11
  Description-Content-Type: text/markdown
12
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
13
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
12
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "cli"
13
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "web"
14
14
  Requires-Dist: oauthlib>=3.2.2; platform_system != "Pyodide"
15
15
  Requires-Dist: httpx>=0.28.1; platform_system != "Pyodide"
16
16
  Requires-Dist: repath>=0.9.0
17
17
  Requires-Dist: msgpack>=1.1.0
18
18
  Requires-Dist: typing-extensions; python_version < "3.11"
19
19
  Provides-Extra: all
20
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "all"
21
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "all"
22
- Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "all"
20
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "all"
21
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "all"
22
+ Requires-Dist: flet-desktop==0.82.3.dev7883; extra == "all"
23
23
  Provides-Extra: cli
24
- Requires-Dist: flet-cli==0.82.3.dev7877; extra == "cli"
24
+ Requires-Dist: flet-cli==0.82.3.dev7883; extra == "cli"
25
25
  Provides-Extra: desktop
26
- Requires-Dist: flet-desktop==0.82.3.dev7877; extra == "desktop"
26
+ Requires-Dist: flet-desktop==0.82.3.dev7883; extra == "desktop"
27
27
  Provides-Extra: web
28
- Requires-Dist: flet-web==0.82.3.dev7877; extra == "web"
28
+ Requires-Dist: flet-web==0.82.3.dev7883; extra == "web"
29
29
 
30
30
  <p align="center">
31
31
  <a href="https://flet.dev"><img src="https://raw.githubusercontent.com/flet-dev/flet/refs/heads/main/media/logo/flet-logo.svg" height="150" alt="Flet logo"></a>
@@ -2,10 +2,10 @@ repath>=0.9.0
2
2
  msgpack>=1.1.0
3
3
 
4
4
  [:extra == "cli"]
5
- flet-cli==0.82.3.dev7877
5
+ flet-cli==0.82.3.dev7883
6
6
 
7
7
  [:extra == "web"]
8
- flet-web==0.82.3.dev7877
8
+ flet-web==0.82.3.dev7883
9
9
 
10
10
  [:platform_system != "Pyodide"]
11
11
  oauthlib>=3.2.2
@@ -15,15 +15,15 @@ httpx>=0.28.1
15
15
  typing-extensions
16
16
 
17
17
  [all]
18
- flet-cli==0.82.3.dev7877
19
- flet-web==0.82.3.dev7877
20
- flet-desktop==0.82.3.dev7877
18
+ flet-cli==0.82.3.dev7883
19
+ flet-web==0.82.3.dev7883
20
+ flet-desktop==0.82.3.dev7883
21
21
 
22
22
  [cli]
23
- flet-cli==0.82.3.dev7877
23
+ flet-cli==0.82.3.dev7883
24
24
 
25
25
  [desktop]
26
- flet-desktop==0.82.3.dev7877
26
+ flet-desktop==0.82.3.dev7883
27
27
 
28
28
  [web]
29
- flet-web==0.82.3.dev7877
29
+ flet-web==0.82.3.dev7883
@@ -1,51 +0,0 @@
1
- from typing import Any
2
-
3
- from flet.controls.base_control import control
4
- from flet.controls.services.service import Service
5
-
6
- __all__ = ["SharedPreferences"]
7
-
8
-
9
- @control("SharedPreferences")
10
- class SharedPreferences(Service):
11
- """
12
- Provides access to persistent key-value storage.
13
- """
14
-
15
- async def set(self, key: str, value: Any) -> bool:
16
- """
17
- Sets a value for the given key.
18
- """
19
- if value is None:
20
- raise ValueError("value can't be None")
21
- return await self._invoke_method("set", {"key": key, "value": value})
22
-
23
- async def get(self, key: str):
24
- """
25
- Gets the value for the given key.
26
- """
27
- return await self._invoke_method("get", {"key": key})
28
-
29
- async def contains_key(self, key: str) -> bool:
30
- """
31
- Checks if the given key exists.
32
- """
33
- return await self._invoke_method("contains_key", {"key": key})
34
-
35
- async def remove(self, key: str) -> bool:
36
- """
37
- Removes the value for the given key.
38
- """
39
- return await self._invoke_method("remove", {"key": key})
40
-
41
- async def get_keys(self, key_prefix: str) -> list[str]:
42
- """
43
- Gets all keys with the given prefix.
44
- """
45
- return await self._invoke_method("get_keys", {"key_prefix": key_prefix})
46
-
47
- async def clear(self) -> bool:
48
- """
49
- Clears all keys and values.
50
- """
51
- return await self._invoke_method("clear")
File without changes
File without changes