flet 0.70.0.dev6516__tar.gz → 0.70.0.dev6533__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.
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/PKG-INFO +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/pyproject.toml +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/authorization_service.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/oauth_provider.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/animation.py +20 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/base_control.py +6 -2
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/base_page.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/control.py +0 -3
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/control_event.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/image.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +3 -5
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/expansion_panel.py +2 -2
- flet-0.70.0.dev6533/src/flet/controls/material/expansion_tile.py +351 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/text_button.py +6 -6
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/object_patch.py +5 -3
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/page.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/theme.py +136 -159
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/connection.py +3 -3
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/flet_socket_server.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/protocol.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/pyodide_connection.py +2 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/session.py +3 -2
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/security/__init__.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/testing/flet_test_app.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/files.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/platform_utils.py +5 -3
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/version.py +1 -1
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/PKG-INFO +1 -1
- flet-0.70.0.dev6516/src/flet/controls/material/expansion_tile.py +0 -214
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/README.md +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/setup.cfg +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/app.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/authorization.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/group.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/oauth_token.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/providers/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/providers/github_oauth_provider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/providers/google_oauth_provider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/auth/user.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/cli.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/component.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/component_decorator.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/component_owned.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/hook.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/use_callback.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/use_context.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/use_effect.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/use_memo.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/hooks/use_state.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/memo.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/observable.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/public_utils.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/components/utils.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/adaptive_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/alignment.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/blur.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/border.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/border_radius.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/box.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/buttons.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/colors.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/context.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/control_state.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/animated_switcher.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/autofill_group.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/arc.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/canvas.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/circle.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/color.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/fill.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/image.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/line.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/oval.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/path.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/points.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/rect.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/shadow.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/shape.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/canvas/text.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/column.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/dismissible.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/drag_target.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/draggable.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/flet_app.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/gesture_detector.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/grid_view.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/icon.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/interactive_viewer.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/keyboard_listener.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/list_view.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/markdown.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/merge_semantics.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/pagelet.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/placeholder.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/reorderable_draggable.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/responsive_row.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/row.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/safe_area.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/screenshot.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/semantics.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/shader_mask.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/stack.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/text.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/text_span.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/transparent_pointer.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/view.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/window.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/core/window_drag_area.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/device_info.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/dialog_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/duration.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/embed_json_encoder.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/events.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/exceptions.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/geometry.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/gradients.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/icon_data.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/id_counter.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/keys.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/layout_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/margin.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/alert_dialog.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/app_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/auto_complete.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/badge.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/banner.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/bottom_app_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/bottom_sheet.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/card.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/checkbox.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/chip.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/circle_avatar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/container.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/datatable.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/date_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/date_range_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/divider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/dropdown.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/dropdownm2.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/elevated_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/filled_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/filled_tonal_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/floating_action_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/form_field_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/icon_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/icons.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/list_tile.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/menu_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/menu_item_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/navigation_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/navigation_drawer.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/navigation_rail.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/outlined_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/popup_menu_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/progress_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/progress_ring.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/radio.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/radio_group.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/range_slider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/reorderable_list_view.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/search_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/segmented_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/selection_area.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/slider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/snack_bar.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/submenu_button.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/switch.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/tabs.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/textfield.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/time_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/tooltip.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/material/vertical_divider.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/multi_view.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/padding.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/painting.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/query_string.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/ref.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/scrollable_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/browser_context_menu.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/clipboard.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/file_picker.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/haptic_feedback.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/semantics_service.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/service.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/shake_detector.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/shared_preferences.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/storage_paths.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/services/url_launcher.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/template_route.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/text_style.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/transform.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/controls/types.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/fastapi/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/messaging/session_store.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/pubsub/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/pubsub/pubsub_client.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/pubsub/pubsub_hub.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/testing/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/testing/finder.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/testing/tester.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/__init__.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/browser.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/classproperty.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/deprecated.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/deprecated_enum.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/from_dict.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/hashing.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/json_utils.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/locks.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/network.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/object_model.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/once.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/pip.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/slugify.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/strings.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet/utils/vector.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/SOURCES.txt +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/dependency_links.txt +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/entry_points.txt +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/requires.txt +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/src/flet.egg-info/top_level.txt +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_base_control.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_colors.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_dataclasses.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_datetime.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_events.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_from_dict.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_icons.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_object_diff_frozen.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_object_diff_in_place.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_object_diff_performance.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_observable.py +0 -0
- {flet-0.70.0.dev6516 → flet-0.70.0.dev6533}/tests/test_patch_dataclass.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "flet"
|
|
3
|
-
version = "0.70.0.
|
|
3
|
+
version = "0.70.0.dev6533"
|
|
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"
|
|
@@ -90,7 +90,7 @@ class AuthorizationService(Authorization):
|
|
|
90
90
|
self.user = await self.provider._fetch_user(self.__token.access_token)
|
|
91
91
|
if self.user is None and self.provider.user_endpoint is not None:
|
|
92
92
|
if self.provider.user_id_fn is None:
|
|
93
|
-
raise
|
|
93
|
+
raise ValueError(
|
|
94
94
|
"user_id_fn must be specified too if user_endpoint is not None"
|
|
95
95
|
)
|
|
96
96
|
self.user = await self.__get_user()
|
|
@@ -36,7 +36,7 @@ class OAuthProvider:
|
|
|
36
36
|
self.code_verifier = code_verifier
|
|
37
37
|
|
|
38
38
|
def _name(self):
|
|
39
|
-
raise
|
|
39
|
+
raise NotImplementedError("Subclasses must implement _name()")
|
|
40
40
|
|
|
41
41
|
async def _fetch_groups(self, access_token: str) -> list[Group]:
|
|
42
42
|
return []
|
|
@@ -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,13 +125,16 @@ 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__
|
|
130
134
|
self._i = ControlId.next()
|
|
131
135
|
if not hasattr(self, "_c") or self._c is None:
|
|
132
136
|
cls_name = f"{self.__class__.__module__}.{self.__class__.__qualname__}"
|
|
133
|
-
raise
|
|
137
|
+
raise ValueError(
|
|
134
138
|
f"Control {cls_name} must have @control decorator with "
|
|
135
139
|
"type_name specified."
|
|
136
140
|
)
|
|
@@ -232,7 +236,7 @@ class BaseControl:
|
|
|
232
236
|
# public methods
|
|
233
237
|
def update(self) -> None:
|
|
234
238
|
if hasattr(self, "_frozen"):
|
|
235
|
-
raise
|
|
239
|
+
raise RuntimeError("Frozen control cannot be updated.")
|
|
236
240
|
if not self.page:
|
|
237
241
|
raise RuntimeError(
|
|
238
242
|
f"{self.__class__.__qualname__} Control must be added to the page first"
|
|
@@ -329,7 +329,7 @@ class BasePage(AdaptiveControl):
|
|
|
329
329
|
Exception: If the specified dialog is already open.
|
|
330
330
|
"""
|
|
331
331
|
if dialog in self._dialogs.controls:
|
|
332
|
-
raise
|
|
332
|
+
raise RuntimeError("Dialog is already opened")
|
|
333
333
|
|
|
334
334
|
original_on_dismiss = dialog.on_dismiss
|
|
335
335
|
|
|
@@ -83,7 +83,7 @@ def get_event_field_type(control: Any, field_name: str):
|
|
|
83
83
|
|
|
84
84
|
return event_type
|
|
85
85
|
except Exception as e:
|
|
86
|
-
raise
|
|
86
|
+
raise RuntimeError(f"[resolve error] {field_name}: {e}") from e
|
|
87
87
|
|
|
88
88
|
|
|
89
89
|
EventControlType = TypeVar("EventControlType", bound="BaseControl")
|
|
@@ -29,7 +29,7 @@ class Image(LayoutControl):
|
|
|
29
29
|
|
|
30
30
|
```python
|
|
31
31
|
ft.Image(
|
|
32
|
-
|
|
32
|
+
src="https://flet.dev/img/logo.svg",
|
|
33
33
|
width=100,
|
|
34
34
|
height=100,
|
|
35
35
|
)
|
|
@@ -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
|
|
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
|
|
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
|
|
@@ -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
|
|
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
|
+
)
|
|
@@ -25,10 +25,10 @@ class TextButton(LayoutControl, AdaptiveControl):
|
|
|
25
25
|
|
|
26
26
|
```python
|
|
27
27
|
ft.TextButton(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
content="Text Button",
|
|
29
|
+
icon=ft.Icons.STAR_BORDER,
|
|
30
|
+
icon_color=ft.Colors.BLUE_300,
|
|
31
|
+
)
|
|
32
32
|
```
|
|
33
33
|
"""
|
|
34
34
|
|
|
@@ -87,8 +87,8 @@ class TextButton(LayoutControl, AdaptiveControl):
|
|
|
87
87
|
"""
|
|
88
88
|
Called when a mouse pointer enters or exists this button's response area.
|
|
89
89
|
|
|
90
|
-
The [`data`][flet.Event.] property of event
|
|
91
|
-
enters and `False` when it exits.
|
|
90
|
+
The [`data`][flet.Event.] property of the event handler argument is `True` when
|
|
91
|
+
cursor enters and `False` when it exits.
|
|
92
92
|
"""
|
|
93
93
|
|
|
94
94
|
on_focus: Optional[ControlEventHandler["TextButton"]] = None
|
|
@@ -1060,7 +1060,7 @@ class DiffBuilder:
|
|
|
1060
1060
|
if parent:
|
|
1061
1061
|
logger.debug("\n\nAdding parent %s to item: %s", parent, item)
|
|
1062
1062
|
if parent is item:
|
|
1063
|
-
raise
|
|
1063
|
+
raise ObjectPatchException(f"Parent is the same as item: {item}")
|
|
1064
1064
|
item._parent = weakref.ref(parent)
|
|
1065
1065
|
else:
|
|
1066
1066
|
logger.debug("\n\nSkip adding parent to item: %s", item)
|
|
@@ -1113,7 +1113,7 @@ class DiffBuilder:
|
|
|
1113
1113
|
|
|
1114
1114
|
if parent:
|
|
1115
1115
|
if parent is item:
|
|
1116
|
-
raise
|
|
1116
|
+
raise ObjectPatchException(f"Parent is the same as item: {item}")
|
|
1117
1117
|
item._parent = weakref.ref(parent)
|
|
1118
1118
|
|
|
1119
1119
|
if hasattr(item, "_frozen"):
|
|
@@ -1130,7 +1130,9 @@ class DiffBuilder:
|
|
|
1130
1130
|
or not isinstance(obj, control_cls)
|
|
1131
1131
|
):
|
|
1132
1132
|
if hasattr(obj, "_frozen"):
|
|
1133
|
-
raise
|
|
1133
|
+
raise RuntimeError(
|
|
1134
|
+
"Frozen controls cannot be updated."
|
|
1135
|
+
) from None
|
|
1134
1136
|
|
|
1135
1137
|
if hasattr(obj, "__changes"):
|
|
1136
1138
|
old_value = getattr(obj, name, None)
|
|
@@ -866,7 +866,7 @@ class Page(BasePage):
|
|
|
866
866
|
"""
|
|
867
867
|
if sess := self.__session():
|
|
868
868
|
return sess
|
|
869
|
-
raise
|
|
869
|
+
raise RuntimeError("An attempt to fetch destroyed session.")
|
|
870
870
|
|
|
871
871
|
@property
|
|
872
872
|
def query(self) -> QueryString:
|