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.
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/PKG-INFO +1 -1
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/pyproject.toml +1 -1
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/__init__.py +0 -2
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/animation.py +20 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/base_control.py +4 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/base_page.py +30 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/image.py +1 -1
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/pagelet.py +33 -24
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/shader_mask.py +16 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/view.py +37 -3
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +3 -5
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/dropdown.py +1 -1
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/expansion_panel.py +2 -2
- flet-0.70.0.dev6519/src/flet/controls/material/expansion_tile.py +351 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_drawer.py +6 -13
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/slider.py +5 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/snack_bar.py +7 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/text_button.py +6 -6
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/vertical_divider.py +23 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/theme.py +136 -159
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/flet_test_app.py +28 -4
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/version.py +1 -1
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/PKG-INFO +1 -1
- flet-0.70.0.dev6491/src/flet/controls/material/expansion_tile.py +0 -214
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/README.md +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/setup.cfg +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/app.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/authorization.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/authorization_service.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/group.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/oauth_provider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/oauth_token.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/github_oauth_provider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/providers/google_oauth_provider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/auth/user.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/cli.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component_decorator.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/component_owned.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/hook.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_callback.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_context.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_effect.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_memo.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/hooks/use_state.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/memo.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/observable.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/public_utils.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/components/utils.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/adaptive_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/alignment.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/blur.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/border.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/border_radius.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/box.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/buttons.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/colors.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/context.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control_event.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/control_state.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/animated_switcher.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/autofill_group.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/arc.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/canvas.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/circle.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/color.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/fill.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/image.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/line.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/oval.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/path.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/points.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/rect.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/shadow.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/shape.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/canvas/text.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/column.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/dismissible.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/drag_target.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/draggable.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/flet_app.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/gesture_detector.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/grid_view.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/icon.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/interactive_viewer.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/keyboard_listener.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/list_view.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/markdown.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/merge_semantics.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/placeholder.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/reorderable_draggable.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/responsive_row.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/row.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/safe_area.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/screenshot.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/semantics.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/stack.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/text.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/text_span.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/transparent_pointer.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/window.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/core/window_drag_area.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/device_info.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/dialog_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/duration.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/embed_json_encoder.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/events.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/exceptions.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/geometry.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/gradients.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/icon_data.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/id_counter.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/keys.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/layout_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/margin.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/alert_dialog.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/app_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/auto_complete.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/badge.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/banner.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/bottom_app_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/bottom_sheet.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/card.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/checkbox.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/chip.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/circle_avatar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/container.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/datatable.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/date_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/date_range_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/divider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/dropdownm2.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/elevated_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/filled_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/filled_tonal_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/floating_action_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/form_field_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/icon_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/icons.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/list_tile.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/menu_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/menu_item_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/navigation_rail.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/outlined_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/popup_menu_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/progress_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/progress_ring.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/radio.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/radio_group.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/range_slider.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/reorderable_list_view.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/search_bar.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/segmented_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/selection_area.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/submenu_button.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/switch.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/tabs.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/textfield.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/time_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/material/tooltip.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/multi_view.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/object_patch.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/padding.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/page.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/painting.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/query_string.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/ref.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/scrollable_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/browser_context_menu.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/clipboard.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/file_picker.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/haptic_feedback.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/semantics_service.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/service.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/shake_detector.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/shared_preferences.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/storage_paths.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/services/url_launcher.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/template_route.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/text_style.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/transform.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/controls/types.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/fastapi/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/connection.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/flet_socket_server.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/protocol.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/pyodide_connection.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/session.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/messaging/session_store.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/pubsub_client.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/pubsub/pubsub_hub.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/security/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/finder.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/testing/tester.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/__init__.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/browser.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/classproperty.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/deprecated.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/deprecated_enum.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/files.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/from_dict.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/hashing.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/json_utils.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/locks.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/network.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/object_model.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/once.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/pip.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/platform_utils.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/slugify.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/strings.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet/utils/vector.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/SOURCES.txt +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/dependency_links.txt +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/entry_points.txt +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/requires.txt +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/src/flet.egg-info/top_level.txt +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_base_control.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_colors.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_dataclasses.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_datetime.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_events.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_from_dict.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_icons.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_frozen.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_in_place.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_object_diff_performance.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/tests/test_observable.py +0 -0
- {flet-0.70.0.dev6491 → flet-0.70.0.dev6519}/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.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
|
-
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
|
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
|
|
@@ -220,7 +220,7 @@ class Dropdown(LayoutControl):
|
|
|
220
220
|
Called when the selected item of this dropdown has changed.
|
|
221
221
|
"""
|
|
222
222
|
|
|
223
|
-
|
|
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
|
|
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
|
+
)
|