flet 0.70.0.dev6491__tar.gz → 0.70.0.dev6519__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.

Potentially problematic release.


This version of flet might be problematic. Click here for more details.

Files changed (272) hide show
  1. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/PKG-INFO +1 -1
  2. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/pyproject.toml +1 -1
  3. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/__init__.py +0 -2
  4. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/animation.py +20 -0
  5. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/base_control.py +4 -0
  6. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/base_page.py +30 -0
  7. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/image.py +1 -1
  8. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/pagelet.py +33 -24
  9. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/shader_mask.py +16 -0
  10. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/view.py +37 -3
  11. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +3 -5
  12. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/dropdown.py +1 -1
  13. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/expansion_panel.py +2 -2
  14. flet-0.70.0.dev6519/src/flet/controls/material/expansion_tile.py +351 -0
  15. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_drawer.py +6 -13
  16. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/slider.py +5 -0
  17. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/snack_bar.py +7 -0
  18. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/text_button.py +6 -6
  19. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/vertical_divider.py +23 -0
  20. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/theme.py +136 -159
  21. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/flet_test_app.py +28 -4
  22. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/version.py +1 -1
  23. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/PKG-INFO +1 -1
  24. flet-0.70.0.dev6491/src/flet/controls/material/expansion_tile.py +0 -214
  25. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/README.md +0 -0
  26. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/setup.cfg +0 -0
  27. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/app.py +0 -0
  28. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/__init__.py +0 -0
  29. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/authorization.py +0 -0
  30. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/authorization_service.py +0 -0
  31. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/group.py +0 -0
  32. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/oauth_provider.py +0 -0
  33. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/oauth_token.py +0 -0
  34. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/__init__.py +0 -0
  35. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
  36. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
  37. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/github_oauth_provider.py +0 -0
  38. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/google_oauth_provider.py +0 -0
  39. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/user.py +0 -0
  40. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/canvas/__init__.py +0 -0
  41. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/cli.py +0 -0
  42. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/__init__.py +0 -0
  43. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component.py +0 -0
  44. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component_decorator.py +0 -0
  45. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component_owned.py +0 -0
  46. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/__init__.py +0 -0
  47. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/hook.py +0 -0
  48. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_callback.py +0 -0
  49. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_context.py +0 -0
  50. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_effect.py +0 -0
  51. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_memo.py +0 -0
  52. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_state.py +0 -0
  53. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/memo.py +0 -0
  54. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/observable.py +0 -0
  55. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/public_utils.py +0 -0
  56. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/utils.py +0 -0
  57. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/__init__.py +0 -0
  58. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/adaptive_control.py +0 -0
  59. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/alignment.py +0 -0
  60. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/blur.py +0 -0
  61. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/border.py +0 -0
  62. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/border_radius.py +0 -0
  63. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/box.py +0 -0
  64. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/buttons.py +0 -0
  65. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/colors.py +0 -0
  66. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/context.py +0 -0
  67. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control.py +0 -0
  68. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control_event.py +0 -0
  69. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control_state.py +0 -0
  70. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/__init__.py +0 -0
  71. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/animated_switcher.py +0 -0
  72. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/autofill_group.py +0 -0
  73. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/__init__.py +0 -0
  74. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/arc.py +0 -0
  75. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/canvas.py +0 -0
  76. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/circle.py +0 -0
  77. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/color.py +0 -0
  78. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/fill.py +0 -0
  79. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/image.py +0 -0
  80. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/line.py +0 -0
  81. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/oval.py +0 -0
  82. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/path.py +0 -0
  83. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/points.py +0 -0
  84. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/rect.py +0 -0
  85. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/shadow.py +0 -0
  86. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/shape.py +0 -0
  87. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/text.py +0 -0
  88. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/column.py +0 -0
  89. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/dismissible.py +0 -0
  90. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/drag_target.py +0 -0
  91. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/draggable.py +0 -0
  92. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/flet_app.py +0 -0
  93. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/gesture_detector.py +0 -0
  94. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/grid_view.py +0 -0
  95. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/icon.py +0 -0
  96. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/interactive_viewer.py +0 -0
  97. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/keyboard_listener.py +0 -0
  98. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/list_view.py +0 -0
  99. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/markdown.py +0 -0
  100. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/merge_semantics.py +0 -0
  101. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/placeholder.py +0 -0
  102. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/reorderable_draggable.py +0 -0
  103. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/responsive_row.py +0 -0
  104. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/row.py +0 -0
  105. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/safe_area.py +0 -0
  106. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/screenshot.py +0 -0
  107. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/semantics.py +0 -0
  108. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/stack.py +0 -0
  109. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/text.py +0 -0
  110. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/text_span.py +0 -0
  111. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/transparent_pointer.py +0 -0
  112. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/window.py +0 -0
  113. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/window_drag_area.py +0 -0
  114. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/__init__.py +0 -0
  115. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
  116. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
  117. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
  118. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
  119. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
  120. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
  121. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_button.py +0 -0
  122. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
  123. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
  124. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
  125. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
  126. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
  127. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
  128. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
  129. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
  130. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
  131. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
  132. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
  133. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
  134. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
  135. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
  136. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
  137. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
  138. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
  139. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
  140. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/device_info.py +0 -0
  141. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/dialog_control.py +0 -0
  142. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/duration.py +0 -0
  143. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/embed_json_encoder.py +0 -0
  144. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/events.py +0 -0
  145. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/exceptions.py +0 -0
  146. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/geometry.py +0 -0
  147. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/gradients.py +0 -0
  148. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/icon_data.py +0 -0
  149. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/id_counter.py +0 -0
  150. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/keys.py +0 -0
  151. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/layout_control.py +0 -0
  152. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/margin.py +0 -0
  153. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/__init__.py +0 -0
  154. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/alert_dialog.py +0 -0
  155. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/app_bar.py +0 -0
  156. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/auto_complete.py +0 -0
  157. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/badge.py +0 -0
  158. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/banner.py +0 -0
  159. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/bottom_app_bar.py +0 -0
  160. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/bottom_sheet.py +0 -0
  161. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/button.py +0 -0
  162. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/card.py +0 -0
  163. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/checkbox.py +0 -0
  164. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/chip.py +0 -0
  165. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/circle_avatar.py +0 -0
  166. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/container.py +0 -0
  167. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/datatable.py +0 -0
  168. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/date_picker.py +0 -0
  169. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/date_range_picker.py +0 -0
  170. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/divider.py +0 -0
  171. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/dropdownm2.py +0 -0
  172. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/elevated_button.py +0 -0
  173. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/filled_button.py +0 -0
  174. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/filled_tonal_button.py +0 -0
  175. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/floating_action_button.py +0 -0
  176. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/form_field_control.py +0 -0
  177. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/icon_button.py +0 -0
  178. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/icons.py +0 -0
  179. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/list_tile.py +0 -0
  180. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/menu_bar.py +0 -0
  181. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/menu_item_button.py +0 -0
  182. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_bar.py +0 -0
  183. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_rail.py +0 -0
  184. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/outlined_button.py +0 -0
  185. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/popup_menu_button.py +0 -0
  186. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/progress_bar.py +0 -0
  187. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/progress_ring.py +0 -0
  188. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/radio.py +0 -0
  189. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/radio_group.py +0 -0
  190. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/range_slider.py +0 -0
  191. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/reorderable_list_view.py +0 -0
  192. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/search_bar.py +0 -0
  193. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/segmented_button.py +0 -0
  194. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/selection_area.py +0 -0
  195. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/submenu_button.py +0 -0
  196. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/switch.py +0 -0
  197. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/tabs.py +0 -0
  198. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/textfield.py +0 -0
  199. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/time_picker.py +0 -0
  200. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/tooltip.py +0 -0
  201. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/multi_view.py +0 -0
  202. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/object_patch.py +0 -0
  203. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/padding.py +0 -0
  204. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/page.py +0 -0
  205. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/painting.py +0 -0
  206. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/query_string.py +0 -0
  207. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/ref.py +0 -0
  208. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/scrollable_control.py +0 -0
  209. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/__init__.py +0 -0
  210. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/browser_context_menu.py +0 -0
  211. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/clipboard.py +0 -0
  212. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/file_picker.py +0 -0
  213. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/haptic_feedback.py +0 -0
  214. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/semantics_service.py +0 -0
  215. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/service.py +0 -0
  216. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/shake_detector.py +0 -0
  217. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/shared_preferences.py +0 -0
  218. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/storage_paths.py +0 -0
  219. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/url_launcher.py +0 -0
  220. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/template_route.py +0 -0
  221. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/text_style.py +0 -0
  222. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/transform.py +0 -0
  223. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/types.py +0 -0
  224. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/fastapi/__init__.py +0 -0
  225. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/connection.py +0 -0
  226. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/flet_socket_server.py +0 -0
  227. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/protocol.py +0 -0
  228. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/pyodide_connection.py +0 -0
  229. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/session.py +0 -0
  230. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/session_store.py +0 -0
  231. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/__init__.py +0 -0
  232. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/pubsub_client.py +0 -0
  233. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/pubsub_hub.py +0 -0
  234. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/security/__init__.py +0 -0
  235. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/__init__.py +0 -0
  236. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/finder.py +0 -0
  237. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/tester.py +0 -0
  238. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/__init__.py +0 -0
  239. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/browser.py +0 -0
  240. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/classproperty.py +0 -0
  241. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/deprecated.py +0 -0
  242. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/deprecated_enum.py +0 -0
  243. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/files.py +0 -0
  244. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/from_dict.py +0 -0
  245. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/hashing.py +0 -0
  246. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/json_utils.py +0 -0
  247. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/locks.py +0 -0
  248. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/network.py +0 -0
  249. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/object_model.py +0 -0
  250. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/once.py +0 -0
  251. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/pip.py +0 -0
  252. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/platform_utils.py +0 -0
  253. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/slugify.py +0 -0
  254. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/strings.py +0 -0
  255. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/vector.py +0 -0
  256. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/SOURCES.txt +0 -0
  257. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/dependency_links.txt +0 -0
  258. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/entry_points.txt +0 -0
  259. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/requires.txt +0 -0
  260. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/top_level.txt +0 -0
  261. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_base_control.py +0 -0
  262. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_colors.py +0 -0
  263. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_dataclasses.py +0 -0
  264. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_datetime.py +0 -0
  265. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_events.py +0 -0
  266. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_from_dict.py +0 -0
  267. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_icons.py +0 -0
  268. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_frozen.py +0 -0
  269. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_in_place.py +0 -0
  270. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_performance.py +0 -0
  271. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_observable.py +0 -0
  272. {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_patch_dataclass.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flet
3
- Version: 0.70.0.dev6491
3
+ Version: 0.70.0.dev6519
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "flet"
3
- version = "0.70.0.dev6491"
3
+ version = "0.70.0.dev6519"
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"
@@ -311,7 +311,6 @@ from flet.controls.material.navigation_bar import (
311
311
  from flet.controls.material.navigation_drawer import (
312
312
  NavigationDrawer,
313
313
  NavigationDrawerDestination,
314
- NavigationDrawerPosition,
315
314
  )
316
315
  from flet.controls.material.navigation_rail import (
317
316
  NavigationRail,
@@ -778,7 +777,6 @@ __all__ = [
778
777
  "NavigationBarTheme",
779
778
  "NavigationDrawer",
780
779
  "NavigationDrawerDestination",
781
- "NavigationDrawerPosition",
782
780
  "NavigationDrawerTheme",
783
781
  "NavigationRail",
784
782
  "NavigationRailDestination",
@@ -86,6 +86,16 @@ class Animation:
86
86
 
87
87
  @dataclass
88
88
  class AnimationStyle:
89
+ """
90
+ Used to override the default parameters of an animation.
91
+
92
+ Note:
93
+ If [`duration`][(c).] and [`reverse_duration`][(c).] are set to
94
+ [`Duration()`][flet.Duration], the corresponding animation will be disabled.
95
+ See [`no_animation()`][(c).no_animation] method for a convenient way to create
96
+ such an instance.
97
+ """
98
+
89
99
  duration: Optional[DurationValue] = None
90
100
  """
91
101
  The duration of the animation.
@@ -106,6 +116,16 @@ class AnimationStyle:
106
116
  The curve to use for the reverse animation.
107
117
  """
108
118
 
119
+ @staticmethod
120
+ def no_animation() -> "AnimationStyle":
121
+ """
122
+ Creates an instance of `AnimationStyle` with no animation.
123
+ """
124
+ return AnimationStyle(
125
+ duration=Duration(),
126
+ reverse_duration=Duration(),
127
+ )
128
+
109
129
  def copy(
110
130
  self,
111
131
  *,
@@ -116,6 +116,7 @@ class BaseControl:
116
116
  """
117
117
  Arbitrary data of any type.
118
118
  """
119
+
119
120
  key: Optional[KeyValue] = None
120
121
 
121
122
  ref: InitVar[Optional[Ref["BaseControl"]]] = None
@@ -124,6 +125,9 @@ class BaseControl:
124
125
  _internals: dict = field(
125
126
  default_factory=dict, init=False, repr=False, compare=False
126
127
  )
128
+ """
129
+ A dictionary for storing internal control configuration.
130
+ """
127
131
 
128
132
  def __post_init__(self, ref: Optional[Ref[Any]]):
129
133
  self.__class__.__hash__ = BaseControl.__hash__
@@ -372,6 +372,36 @@ class BasePage(AdaptiveControl):
372
372
  dialog.update()
373
373
  return dialog
374
374
 
375
+ async def show_drawer(self):
376
+ """
377
+ Show the drawer.
378
+
379
+ Raises:
380
+ ValueError: If no [`drawer`][(c).] is defined.
381
+ """
382
+ await self.__default_view().show_drawer()
383
+
384
+ async def close_drawer(self):
385
+ """
386
+ Close the drawer.
387
+ """
388
+ await self.__default_view().close_drawer()
389
+
390
+ async def show_end_drawer(self):
391
+ """
392
+ Show the end drawer.
393
+
394
+ Raises:
395
+ ValueError: If no [`end_drawer`][(c).] is defined.
396
+ """
397
+ await self.__default_view().show_end_drawer()
398
+
399
+ async def close_end_drawer(self):
400
+ """
401
+ Close the end drawer.
402
+ """
403
+ await self.__default_view().close_end_drawer()
404
+
375
405
  async def take_screenshot(
376
406
  self,
377
407
  pixel_ratio: Optional[Number] = None,
@@ -29,7 +29,7 @@ class Image(LayoutControl):
29
29
 
30
30
  ```python
31
31
  ft.Image(
32
- src_base64="iVBORw0KGgoAAAANSUhEUgAAABkAAAAgCAYAAADnnNMGAAAACXBIWXMAAAORAAADkQFnq8zdAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAA6dJREFUSImllltoHFUYx3/fzOzm0lt23ZrQ1AQbtBehNpvQohgkBYVo410RwQctNE3Sh0IfiiBoIAjqi6TYrKnFy4O3oiiRavDJFi3mXomIBmOxNZe63ay52GR3Zj4f2sTEzmx3m//TYf7/c35zvgPnO6KqrESXqpq3muocAikv6m+/zytj3ejik1VN21G31YA9CgJ6xC+bMyQZPVCuarciPAMYC99V6Vw5pLbFSibHmlVoRVj9P3cmPBM8tSJI/M6mzabpfoAQ9fIF7WK4bd5vvuFnLGgy2vi0abg94A0AcJGvMq3hDxGRyar9r4F+iLAm0yIiRk8m37tctS1WsrIhhrI30+Srmg+J87OXUf3lWGS1q89dC6ltsSanxk4Aj2QBABii96300g87P/rtlrWr8l+vyDMfdlXSyyEikqxsiOUAQJCBhfHdXRfCq1LSsSlcWG+KBAGStvvrMkgiuv8lUc2mREukPwLUfHG+uTQv8Eown7VL3XlbBxYhf1c17hbVF3MDwA9bts280TnaU1YYqPby07aeFlUlHt27wSQ4CLo+F8AvoTCvHmyKF+ZbEb/M77P2LgvAwmrTHAHflN3KZxVbMC2jMFNOpgPnrMSOhvvFkMezXdwV4ePbtvHtxnJAMQ0j4JtVnO+eLb5oiSlt5HDbv7t1O90lpYCCCKbhfzW5kAIwUAazR0BlfII8Ow0I6uoVmI9MyAMwbMs8CExmDbk4zgu931MyO4OI4KrYflkRjOoTI+uM9d1vjotwKPu9QMk/sxzuO8POiVFcdZ1M2YBVsMEAKOqLvaPIe7mACuw0z/80SMH58SMplxlfiDhVi7dw2pltRhjKBQTQdrSja2KKTfE551NHuaZ0QVPvWYQUn31/Vm2nDvgjF4grVJx6suSvrvrSJ/6cSW2Oz9mf264uNrB806xZ1k/CZ49dUKgDEtlCROX2hfHpx8pGuuo3PpqYulw8fjndOp1yhgtNKRevJ1FyR2Ola+jXAjdnwTkZ6o896GdWdxDw7IxFg+0DpmXchTKSBWQnIuJn9u4j7dt+13UfHXEkXQOcuQ4kMhVtqsgUyPiQiPQfHw1NB2sRjmXKuTg1NwwBYLhtPtQX26eqTwGXPDOqvmcC4Hnwfrrad94GrVsOYTqUTkQY+iTlNe/6O1miSP/x0VB/+wMIDwHn/vtV1iQC4Xv95uUEWVCoL9Y5Z+gdovoyMHUFJHv88jmVy0vTuw7cZNv2YaA61Bfb7ZX5F8SaUv2xwZevAAAAAElFTkSuQmCC",
32
+ src="https://flet.dev/img/logo.svg",
33
33
  width=100,
34
34
  height=100,
35
35
  )
@@ -107,27 +107,36 @@ class Pagelet(LayoutControl, AdaptiveControl):
107
107
  if not self.content.visible:
108
108
  raise ValueError("content must be visible")
109
109
 
110
- # todo: deprecate show_* in favor of a open/close methods, or page.open/close
111
- # Drawer
112
- #
113
- def show_drawer(self, drawer: NavigationDrawer):
114
- self.drawer = drawer
115
- self.drawer.open = True
116
- self.update()
117
-
118
- def close_drawer(self):
119
- if self.drawer is not None:
120
- self.drawer.open = False
121
- self.update()
122
-
123
- # End_drawer
124
- #
125
- def show_end_drawer(self, end_drawer: NavigationDrawer):
126
- self.end_drawer = end_drawer
127
- self.end_drawer.open = True
128
- self.update()
129
-
130
- def close_end_drawer(self):
131
- if self.end_drawer is not None:
132
- self.end_drawer.open = False
133
- self.update()
110
+ async def show_drawer(self):
111
+ """
112
+ Show the drawer.
113
+
114
+ Raises:
115
+ ValueError: If no [`drawer`][(c).] is defined.
116
+ """
117
+ if self.drawer is None:
118
+ raise ValueError("No drawer defined")
119
+ await self._invoke_method("show_drawer")
120
+
121
+ async def close_drawer(self):
122
+ """
123
+ Close the drawer.
124
+ """
125
+ await self._invoke_method("close_drawer")
126
+
127
+ async def show_end_drawer(self):
128
+ """
129
+ Show the end drawer.
130
+
131
+ Raises:
132
+ ValueError: If no [`end_drawer`][(c).] is defined.
133
+ """
134
+ if self.end_drawer is None:
135
+ raise ValueError("No end_drawer defined")
136
+ await self._invoke_method("show_end_drawer")
137
+
138
+ async def close_end_drawer(self):
139
+ """
140
+ Close the end drawer.
141
+ """
142
+ await self._invoke_method("close_end_drawer")
@@ -17,6 +17,22 @@ class ShaderMask(LayoutControl):
17
17
 
18
18
  For example, it can be used to gradually fade out the edge of a control by
19
19
  using a [`LinearGradient`][flet.] mask.
20
+
21
+ ```python
22
+ ft.ShaderMask(
23
+ blend_mode=ft.BlendMode.MULTIPLY,
24
+ shader=ft.LinearGradient(
25
+ begin=ft.Alignment.CENTER_LEFT,
26
+ end=ft.Alignment.CENTER_RIGHT,
27
+ colors=[ft.Colors.WHITE, ft.Colors.BLACK],
28
+ tile_mode=ft.GradientTileMode.CLAMP,
29
+ ),
30
+ content=ft.Image(
31
+ src="https://picsum.photos/id/288/300/300",
32
+ height=300,
33
+ fit=ft.BoxFit.FILL,
34
+ )
35
+ ```
20
36
  """
21
37
 
22
38
  shader: Gradient
@@ -158,9 +158,6 @@ class View(ScrollableControl, LayoutControl):
158
158
  can_pop: bool = True
159
159
  on_confirm_pop: Optional[ControlEventHandler["View"]] = None
160
160
 
161
- async def confirm_pop(self, should_pop: bool) -> None:
162
- await self._invoke_method("confirm_pop", {"should_pop": should_pop})
163
-
164
161
  def init(self):
165
162
  super().init()
166
163
  self._internals["host_expanded"] = True
@@ -168,3 +165,40 @@ class View(ScrollableControl, LayoutControl):
168
165
  # Magic methods
169
166
  def __contains__(self, item: Control) -> bool:
170
167
  return item in self.controls
168
+
169
+ async def confirm_pop(self, should_pop: bool) -> None:
170
+ await self._invoke_method("confirm_pop", {"should_pop": should_pop})
171
+
172
+ async def show_drawer(self):
173
+ """
174
+ Show the drawer.
175
+
176
+ Raises:
177
+ ValueError: If no [`drawer`][(c).] is defined.
178
+ """
179
+ if self.drawer is None:
180
+ raise ValueError("No drawer defined")
181
+ await self._invoke_method("show_drawer")
182
+
183
+ async def close_drawer(self):
184
+ """
185
+ Close the drawer.
186
+ """
187
+ await self._invoke_method("close_drawer")
188
+
189
+ async def show_end_drawer(self):
190
+ """
191
+ Show the end drawer.
192
+
193
+ Raises:
194
+ ValueError: If no [`end_drawer`][(c).] is defined.
195
+ """
196
+ if self.end_drawer is None:
197
+ raise ValueError("No end_drawer defined")
198
+ await self._invoke_method("show_end_drawer")
199
+
200
+ async def close_end_drawer(self):
201
+ """
202
+ Close the end drawer.
203
+ """
204
+ await self._invoke_method("close_end_drawer")
@@ -21,12 +21,12 @@ class CupertinoSlidingSegmentedButton(LayoutControl):
21
21
 
22
22
  ```python
23
23
  ft.CupertinoSlidingSegmentedButton(
24
+ selected_index=1,
24
25
  controls=[
25
26
  ft.Text("One"),
26
27
  ft.Text("Two"),
27
28
  ft.Text("Three"),
28
29
  ],
29
- selected_index=1,
30
30
  )
31
31
  ```
32
32
  """
@@ -39,8 +39,7 @@ class CupertinoSlidingSegmentedButton(LayoutControl):
39
39
  Must contain at least two visible Controls.
40
40
 
41
41
  Raises:
42
- ValueError: If [`controls`][(c).] does not contain at least two
43
- visible controls.
42
+ ValueError: If it does not contain at least two visible controls.
44
43
  """
45
44
 
46
45
  selected_index: int = 0
@@ -48,8 +47,7 @@ class CupertinoSlidingSegmentedButton(LayoutControl):
48
47
  The index (starting from 0) of the selected segment in the [`controls`][(c).] list.
49
48
 
50
49
  Raises:
51
- IndexError: If [`selected_index`][(c).] is out of range relative to the
52
- visible controls.
50
+ IndexError: If it is out of range relative to the visible controls.
53
51
  """
54
52
 
55
53
  bgcolor: ColorValue = CupertinoColors.TERTIARY_SYSTEM_FILL
@@ -220,7 +220,7 @@ class Dropdown(LayoutControl):
220
220
  Called when the selected item of this dropdown has changed.
221
221
  """
222
222
 
223
- on_change: Optional[ControlEventHandler["Dropdown"]] = None
223
+ on_text_change: Optional[ControlEventHandler["Dropdown"]] = None
224
224
  """
225
225
  Called when the text input of this dropdown has changed.
226
226
  """
@@ -149,8 +149,8 @@ class ExpansionPanelList(LayoutControl):
149
149
  """
150
150
  Called when an item of [`controls`][(c).] is expanded or collapsed.
151
151
 
152
- The event's [`data`][flet.Event.], contains the index of the
153
- child panel (in [`controls`][(c).]) which triggered this event.
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
154
  """
155
155
 
156
156
  def before_update(self):
@@ -0,0 +1,351 @@
1
+ from enum import Enum
2
+ from typing import Optional
3
+
4
+ from flet.controls.adaptive_control import AdaptiveControl
5
+ from flet.controls.alignment import Alignment
6
+ from flet.controls.animation import AnimationStyle
7
+ from flet.controls.base_control import control
8
+ from flet.controls.buttons import OutlinedBorder
9
+ from flet.controls.control import Control
10
+ from flet.controls.control_event import ControlEventHandler
11
+ from flet.controls.layout_control import LayoutControl
12
+ from flet.controls.padding import PaddingValue
13
+ from flet.controls.types import (
14
+ ClipBehavior,
15
+ ColorValue,
16
+ CrossAxisAlignment,
17
+ IconDataOrControl,
18
+ Number,
19
+ StrOrControl,
20
+ VisualDensity,
21
+ )
22
+
23
+ __all__ = ["ExpansionTile", "TileAffinity"]
24
+
25
+
26
+ class TileAffinity(Enum):
27
+ """
28
+ Where to place a control in controls that use [`ListTile`][flet.] to position a
29
+ control next to a label.
30
+ """
31
+
32
+ LEADING = "leading"
33
+ """
34
+ Positions the control on the leading edge, and the secondary control, if
35
+ any, on the trailing edge.
36
+ """
37
+
38
+ TRAILING = "trailing"
39
+ """
40
+ Positions the control on the trailing edge, and the secondary control, if
41
+ any, on the leading edge.
42
+ """
43
+
44
+ PLATFORM = "platform"
45
+ """
46
+ Positions the control relative to the text in the fashion that is typical
47
+ for the current platform, and place the secondary control on the opposite
48
+ side.
49
+ """
50
+
51
+
52
+ @control("ExpansionTile")
53
+ class ExpansionTile(LayoutControl, AdaptiveControl):
54
+ """
55
+ A single-line ListTile with an expansion arrow icon that expands or collapses the
56
+ tile to reveal or hide its controls.
57
+
58
+ ```python
59
+ ft.ExpansionTile(
60
+ width=400,
61
+ title="Account",
62
+ subtitle="Manage profile and security",
63
+ expanded=True,
64
+ controls=[
65
+ ft.ListTile(title=ft.Text("Profile")),
66
+ ft.ListTile(title=ft.Text("Security")),
67
+ ],
68
+ )
69
+ ```
70
+ """
71
+
72
+ title: StrOrControl
73
+ """
74
+ A Control to display as primary content of this tile.
75
+
76
+ Typically a [`Text`][flet.] control.
77
+
78
+ Raises:
79
+ ValueError: If it is neither a string nor a visible Control.
80
+ """
81
+
82
+ controls: Optional[list[Control]] = None
83
+ """
84
+ The controls to be displayed when this tile [expands][(c).expanded].
85
+
86
+ Typically a list of [`ListTile`][flet.] controls.
87
+ """
88
+
89
+ subtitle: Optional[StrOrControl] = None
90
+ """
91
+ Additional content displayed below the [`title`][(c).].
92
+
93
+ Typically a [`Text`][flet.] control.
94
+ """
95
+
96
+ leading: Optional[IconDataOrControl] = None
97
+ """
98
+ A Control to display before the [`title`][(c).].
99
+
100
+ Typically a [`CircleAvatar`][flet.] control.
101
+
102
+ Depending on the value of [`affinity`][(c).], this control
103
+ may replace the rotating expansion arrow icon.
104
+ """
105
+
106
+ trailing: Optional[IconDataOrControl] = None
107
+ """
108
+ A Control to display after the [`title`][(c).].
109
+
110
+ Typically an [`Icon`][flet.] control.
111
+
112
+ Depending on the value of [`affinity`][(c).], this control
113
+ may replace the rotating expansion arrow icon.
114
+ """
115
+
116
+ controls_padding: Optional[PaddingValue] = None
117
+ """
118
+ Defines the padding around the [`controls`][(c).].
119
+
120
+ If `None`, [`ExpansionTileTheme.controls_padding`][flet.] is used;
121
+ if that is also `None`, then defaults to `Padding.all(0)`.
122
+ """
123
+
124
+ tile_padding: Optional[PaddingValue] = None
125
+ """
126
+ Defines the tile's padding.
127
+
128
+ Analogous to [`ListTile.content_padding`][flet.], this property defines the
129
+ insets for the [`leading`][(c).], [`title`][(c).], [`subtitle`][(c).] and
130
+ [`trailing`][(c).] controls. It does not inset the expanded
131
+ [`controls`][(c).] widgets.
132
+
133
+ If `None`, [`ExpansionTileTheme.tile_padding`][flet.] is used;
134
+ if that is also `None`, then defaults to `Padding.symmetric(horizontal=16.0)`.
135
+ """
136
+
137
+ affinity: Optional[TileAffinity] = None
138
+ """
139
+ Typically used to force the expansion arrow icon to the tile's [`leading`][(c).] or
140
+ [`trailing`][(c).] edge.
141
+
142
+ If `None`, [`ListTileTheme.affinity`][flet.] is used;
143
+ if that is also `None`, then defaults to [`TileAffinity.TRAILING`][flet.]
144
+ (the expansion arrow icon appears on the tile's trailing edge).
145
+ """
146
+
147
+ expanded_alignment: Optional[Alignment] = None
148
+ """
149
+ Defines the alignment of [`controls`][(c).], which are arranged in a column when
150
+ the tile is expanded.
151
+
152
+ If `None`, [`ExpansionTileTheme.expanded_alignment`][flet.] is used;
153
+ if that is also `None`, then defaults to [`Alignment.CENTER`][flet.].
154
+ """
155
+
156
+ expanded_cross_axis_alignment: CrossAxisAlignment = CrossAxisAlignment.CENTER
157
+ """
158
+ Defines the alignment of each child control within [`controls`][(c).] when the
159
+ tile is expanded.
160
+
161
+ Raises:
162
+ ValueError: If set to [`CrossAxisAlignment.BASELINE`][flet.].
163
+ """
164
+
165
+ clip_behavior: Optional[ClipBehavior] = None
166
+ """
167
+ Defines how the content of this tile is clipped.
168
+
169
+ If set and a custom collapsed or expanded shape is provided,
170
+ this value determines how this tile is clipped.
171
+
172
+ If `None`, [`ExpansionTileTheme.clip_behavior`][flet.] is used;
173
+ if that is also `None`, then defaults to [`ClipBehavior.ANTI_ALIAS`][flet.].
174
+ """
175
+
176
+ maintain_state: bool = False
177
+ """
178
+ A boolean value which defines whether the state of the [`controls`][(c).] is
179
+ maintained when this tile [expands][(c).expanded] and collapses.
180
+
181
+ When `True`, the children are kept in the tree while the tile is collapsed.
182
+ When `False` (default), the [`controls`][(c).] are removed from the tree when
183
+ the tile is collapsed and recreated upon expansion.
184
+ """
185
+
186
+ text_color: Optional[ColorValue] = None
187
+ """
188
+ The color of this tile's titles when the sublist is [`expanded`][(c).].
189
+
190
+ If `None`, [`ExpansionTileTheme.text_color`][flet.] is used;
191
+ if that is also `None`, then defaults to [`body_large`][flet.TextTheme.]
192
+ of the [`Theme.text_theme`][flet.].
193
+ """
194
+
195
+ icon_color: Optional[ColorValue] = None
196
+ """
197
+ The icon color of this tile's expansion arrow icon
198
+ when the sublist is [`expanded`][(c).].
199
+
200
+ If `None`, [`ExpansionTileTheme.icon_color`][flet.] is used;
201
+ if that is also `None`, then defaults to [`ColorScheme.primary`][flet.]
202
+ of the [`Page.theme`][flet.].
203
+ """
204
+
205
+ shape: Optional[OutlinedBorder] = None
206
+ """
207
+ The border shape of this tile when the sublist is [`expanded`][(c).].
208
+
209
+ If `None`, [`ExpansionTileTheme.shape`][flet.] is used;
210
+ if that is also `None`, then defaults to a [`Border`][flet.] with vertical sides
211
+ of color [`Theme.divider_color`][flet.].
212
+ """
213
+
214
+ bgcolor: Optional[ColorValue] = None
215
+ """
216
+ The color to display behind the sublist when [`expanded`][(c).].
217
+
218
+ If `None`, [`ExpansionTileTheme.bgcolor`][flet.] is used;
219
+ if that is also `None`, then defaults to [`Colors.TRANSPARENT`][flet.].
220
+ """
221
+
222
+ collapsed_bgcolor: Optional[ColorValue] = None
223
+ """
224
+ Defines the background color of this tile when the sublist
225
+ is collapsed ([`expanded`][(c).] is False).
226
+
227
+ If `None`, [`ExpansionTileTheme.collapsed_bgcolor`][flet.] is used;
228
+ if that is also `None`, then defaults to [`Colors.TRANSPARENT`][flet.].
229
+ """
230
+
231
+ collapsed_icon_color: Optional[ColorValue] = None
232
+ """
233
+ The icon color of this tile's expansion arrow icon when the sublist
234
+ is collapsed ([`expanded`][(c).] is False).
235
+
236
+ If `None`, [`ExpansionTileTheme.collapsed_icon_color`][flet.] is used;
237
+ if that is also `None`, then defaults to [`ColorScheme.on_surface`][flet.]
238
+ of the [`Page.theme`][flet.].
239
+ """
240
+
241
+ collapsed_text_color: Optional[ColorValue] = None
242
+ """
243
+ The color of this tile's titles when the sublist
244
+ is collapsed ([`expanded`][(c).] is False).
245
+
246
+ If `None`, [`ExpansionTileTheme.collapsed_text_color`][flet.] is used;
247
+ if that is also `None`, then defaults to [`body_large`][flet.TextTheme.]
248
+ of the [`Theme.text_theme`][flet.].
249
+ """
250
+
251
+ collapsed_shape: Optional[OutlinedBorder] = None
252
+ """
253
+ The tile's border shape when the sublist is collapsed.
254
+
255
+ If `None`, [`ExpansionTileTheme.shape`][flet.] is used;
256
+ if that is also `None`, then defaults to a [`Border`][flet.] with vertical sides
257
+ of color [`Colors.TRANSPARENT`][flet.].
258
+ """
259
+
260
+ dense: Optional[bool] = None
261
+ """
262
+ Whether this list tile is part of a vertically dense list.
263
+
264
+ Dense tiles default to having a smaller height.
265
+
266
+ It is not recommended to set this property to `True` when in Material3.
267
+
268
+ If `None`, then its value is based on [`ListTileTheme.dense`][flet.].
269
+ """
270
+
271
+ enable_feedback: bool = True
272
+ """
273
+ Whether detected gestures should provide acoustic and/or haptic feedback. For
274
+ example, on Android a tap will produce a clicking sound and a long-press will
275
+ produce a short vibration, when feedback is enabled.
276
+ """
277
+
278
+ show_trailing_icon: bool = True
279
+ """
280
+ Whether this tile should build/show a default trailing icon, if
281
+ [`trailing`][(c).] is `None`.
282
+ """
283
+
284
+ min_tile_height: Optional[Number] = None
285
+ """
286
+ The minimum height of this tile.
287
+
288
+ If `None`, the default tile heights are `56.0`, `72.0`, and `88.0` for one, two,
289
+ and three lines of text respectively. If [`dense`][(c).] is `True`, these defaults
290
+ are changed to `48.0`, `64.0`, and `76.0`. A visual density value or a large title
291
+ will also adjust the default tile heights.
292
+ """
293
+
294
+ expanded: bool = False
295
+ """
296
+ The expansion state of this tile.
297
+
298
+ `True` - expanded, `False` - collapsed.
299
+ """
300
+
301
+ visual_density: Optional[VisualDensity] = None
302
+ """
303
+ Defines how compact this tile's layout will be.
304
+ """
305
+
306
+ animation_style: Optional[AnimationStyle] = None
307
+ """
308
+ Defines the animation style (curve and duration) for this tile's expansion and
309
+ collapse.
310
+
311
+ If [`AnimationStyle.duration`][flet.] is provided, it will be used to override
312
+ the expansion animation duration. If it is `None`, then
313
+ [`AnimationStyle.duration`][flet.] from the
314
+ [`ExpansionTileTheme.animation_style`][(c).] will be used. If that is also
315
+ `None`, `Duration(milliseconds=200)` will be used as default.
316
+
317
+ If [`AnimationStyle.curve`][flet.] is provided, it will be used to override
318
+ the expansion animation curve. If it is `None`, then
319
+ [`AnimationStyle.curve`][flet.] from the
320
+ [`ExpansionTileTheme.animation_style`][(c).] will be used. If that is also
321
+ `None`, [`Curves.EASE_IN`][flet.] will be used as default.
322
+
323
+ If [`AnimationStyle.reverse_curve`][flet.] is provided, it will be used to override
324
+ the collapse animation curve. If it is `None`, then
325
+ [`AnimationStyle.reverse_curve`][flet.] from the
326
+ [`ExpansionTileTheme.animation_style`][(c).] will be used. If that is also
327
+ `None`, the expansion curve will be used as default.
328
+
329
+ Tip:
330
+ To disable the animations, use
331
+ [`AnimationStyle.no_animation()`][flet.AnimationStyle.no_animation].
332
+ """
333
+
334
+ on_change: Optional[ControlEventHandler["ExpansionTile"]] = None
335
+ """
336
+ Called when a user clicks or taps the list tile.
337
+
338
+ The [`data`][flet.Event.] property of the event handler argument is a boolean
339
+ representing the [`expanded`][(c).] state of the tile after the change.
340
+ """
341
+
342
+ def before_update(self):
343
+ super().before_update()
344
+ if isinstance(self.title, Control) and not self.title.visible:
345
+ raise ValueError("title must be visible")
346
+ if self.expanded_cross_axis_alignment == CrossAxisAlignment.BASELINE:
347
+ raise ValueError(
348
+ "expanded_cross_axis_alignment cannot be CrossAxisAlignment.BASELINE "
349
+ "since the expanded controls are aligned in a column, not a row. "
350
+ "Try aligning the controls differently."
351
+ )