flet 0.70.0.dev6370__tar.gz → 0.70.0.dev6412__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.dev6370 → flet-0.70.0.dev6412}/PKG-INFO +1 -1
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/pyproject.toml +1 -1
- flet-0.70.0.dev6412/src/flet/components/hooks/use_state.py +81 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/stack.py +27 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/auto_complete.py +41 -6
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/menu_item_button.py +1 -1
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/submenu_button.py +19 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/switch.py +5 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/text_button.py +8 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/time_picker.py +8 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/version.py +1 -1
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/PKG-INFO +1 -1
- flet-0.70.0.dev6370/src/flet/components/hooks/use_state.py +0 -58
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/README.md +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/setup.cfg +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/app.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/authorization.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/authorization_service.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/group.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/oauth_provider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/oauth_token.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/auth0_oauth_provider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/azure_oauth_provider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/github_oauth_provider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/google_oauth_provider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/user.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/cli.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/component.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/component_decorator.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/component_owned.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/hook.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/use_callback.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/use_context.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/use_effect.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/hooks/use_memo.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/memo.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/observable.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/public_utils.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/components/utils.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/adaptive_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/alignment.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/animation.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/base_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/base_page.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/blur.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/border.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/border_radius.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/box.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/buttons.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/colors.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/context.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/control_event.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/control_state.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/animated_switcher.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/autofill_group.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/arc.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/canvas.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/circle.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/color.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/fill.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/image.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/line.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/oval.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/path.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/points.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/rect.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/shadow.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/shape.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/canvas/text.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/column.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/dismissible.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/drag_target.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/draggable.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/flet_app.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/gesture_detector.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/grid_view.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/icon.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/image.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/interactive_viewer.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/keyboard_listener.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/list_view.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/markdown.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/merge_semantics.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/pagelet.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/placeholder.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/reorderable_draggable.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/responsive_row.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/row.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/safe_area.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/screenshot.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/semantics.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/shader_mask.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/text.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/text_span.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/transparent_pointer.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/view.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/window.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/core/window_drag_area.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_action_sheet.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_action_sheet_action.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_activity_indicator.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_alert_dialog.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_app_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_bottom_sheet.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_checkbox.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_colors.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_context_menu.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_context_menu_action.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_date_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_dialog_action.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_filled_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_icons.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_list_tile.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_navigation_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_radio.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_segmented_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_slider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_sliding_segmented_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_switch.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_textfield.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_timer_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_tinted_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/device_info.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/dialog_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/duration.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/embed_json_encoder.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/events.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/exceptions.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/geometry.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/gradients.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/icon_data.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/id_counter.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/keys.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/layout_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/margin.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/alert_dialog.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/app_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/badge.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/banner.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/bottom_app_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/bottom_sheet.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/card.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/checkbox.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/chip.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/circle_avatar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/container.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/datatable.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/date_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/date_range_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/divider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/dropdown.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/dropdownm2.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/elevated_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/expansion_panel.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/expansion_tile.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/filled_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/filled_tonal_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/floating_action_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/form_field_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/icon_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/icons.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/list_tile.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/menu_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/navigation_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/navigation_drawer.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/navigation_rail.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/outlined_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/popup_menu_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/progress_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/progress_ring.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/radio.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/radio_group.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/range_slider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/reorderable_list_view.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/search_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/segmented_button.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/selection_area.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/slider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/snack_bar.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/tabs.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/textfield.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/tooltip.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/material/vertical_divider.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/multi_view.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/object_patch.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/padding.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/page.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/painting.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/query_string.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/ref.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/scrollable_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/browser_context_menu.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/clipboard.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/file_picker.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/haptic_feedback.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/semantics_service.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/service.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/shake_detector.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/shared_preferences.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/storage_paths.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/services/url_launcher.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/template_route.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/text_style.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/theme.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/transform.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/types.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/fastapi/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/connection.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/flet_socket_server.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/protocol.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/pyodide_connection.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/session.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/messaging/session_store.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/pubsub/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/pubsub/pubsub_client.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/pubsub/pubsub_hub.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/security/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/testing/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/testing/finder.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/testing/flet_test_app.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/testing/tester.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/__init__.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/browser.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/classproperty.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/deprecated.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/files.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/from_dict.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/hashing.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/json_utils.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/locks.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/network.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/object_model.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/once.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/pip.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/platform_utils.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/slugify.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/strings.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/utils/vector.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/SOURCES.txt +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/dependency_links.txt +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/entry_points.txt +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/requires.txt +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet.egg-info/top_level.txt +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_base_control.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_colors.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_dataclasses.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_datetime.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_events.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_from_dict.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_icons.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_object_diff_frozen.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_object_diff_in_place.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_object_diff_performance.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/tests/test_observable.py +0 -0
- {flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/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.dev6412"
|
|
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"
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Callable
|
|
4
|
+
from dataclasses import dataclass
|
|
5
|
+
from typing import Any, TypeVar
|
|
6
|
+
|
|
7
|
+
from flet.components.hooks.hook import Hook
|
|
8
|
+
from flet.components.observable import Observable, ObservableSubscription
|
|
9
|
+
from flet.components.utils import current_component
|
|
10
|
+
|
|
11
|
+
StateT = TypeVar("StateT")
|
|
12
|
+
Updater = Callable[[StateT], StateT]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclass
|
|
16
|
+
class StateHook(Hook):
|
|
17
|
+
value: Any
|
|
18
|
+
subscription: ObservableSubscription | None = None
|
|
19
|
+
version: int = 0
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def use_state(
|
|
23
|
+
initial: StateT | Callable[[], StateT],
|
|
24
|
+
) -> tuple[StateT, Callable[[StateT | Updater], None]]:
|
|
25
|
+
"""
|
|
26
|
+
Adds state to a function component, similar to React's useState().
|
|
27
|
+
|
|
28
|
+
The returned setter accepts either:
|
|
29
|
+
- a new value, or
|
|
30
|
+
- a function receiving the previous state and returning the next one.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
initial: Initial state value or a function returning it.
|
|
34
|
+
|
|
35
|
+
Returns:
|
|
36
|
+
(value, set_value) tuple.
|
|
37
|
+
"""
|
|
38
|
+
component = current_component()
|
|
39
|
+
hook = component.use_hook(
|
|
40
|
+
lambda: StateHook(
|
|
41
|
+
component,
|
|
42
|
+
initial() if callable(initial) else initial,
|
|
43
|
+
)
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def update_subscription(h: StateHook):
|
|
47
|
+
# Detach previous subscription if any
|
|
48
|
+
if h.subscription:
|
|
49
|
+
component._detach_observable_subscription(h.subscription)
|
|
50
|
+
h.subscription = None
|
|
51
|
+
|
|
52
|
+
# Attach new subscription if value is Observable
|
|
53
|
+
if isinstance(h.value, Observable):
|
|
54
|
+
h.subscription = component._attach_observable_subscription(h.value)
|
|
55
|
+
|
|
56
|
+
update_subscription(hook)
|
|
57
|
+
|
|
58
|
+
def set_state(new_value_or_fn: StateT | Updater):
|
|
59
|
+
"""
|
|
60
|
+
Update the state value.
|
|
61
|
+
|
|
62
|
+
Can be called with either:
|
|
63
|
+
- a direct new value, or
|
|
64
|
+
- a function that takes the current value and returns the next one.
|
|
65
|
+
"""
|
|
66
|
+
# Compute next value
|
|
67
|
+
new_value = (
|
|
68
|
+
new_value_or_fn(hook.value)
|
|
69
|
+
if callable(new_value_or_fn)
|
|
70
|
+
else new_value_or_fn
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Only trigger update if value changed (shallow equality)
|
|
74
|
+
if new_value != hook.value:
|
|
75
|
+
hook.value = new_value
|
|
76
|
+
update_subscription(hook)
|
|
77
|
+
hook.version += 1
|
|
78
|
+
if hook.component:
|
|
79
|
+
hook.component._schedule_update()
|
|
80
|
+
|
|
81
|
+
return hook.value, set_state
|
|
@@ -31,6 +31,33 @@ class Stack(LayoutControl, AdaptiveControl):
|
|
|
31
31
|
Stack is also useful if you want to implement implicit animations
|
|
32
32
|
(https://flet.dev/docs/guides/python/animations/) that require knowing absolute
|
|
33
33
|
position of a target value.
|
|
34
|
+
|
|
35
|
+
```python
|
|
36
|
+
ft.Stack(
|
|
37
|
+
width=300,
|
|
38
|
+
height=300,
|
|
39
|
+
controls=[
|
|
40
|
+
ft.Image(
|
|
41
|
+
src="https://picsum.photos/300/300",
|
|
42
|
+
width=300,
|
|
43
|
+
height=300,
|
|
44
|
+
fit=ft.BoxFit.CONTAIN,
|
|
45
|
+
),
|
|
46
|
+
ft.Row(
|
|
47
|
+
alignment=ft.MainAxisAlignment.CENTER,
|
|
48
|
+
controls=[
|
|
49
|
+
ft.Text(
|
|
50
|
+
value="Image title",
|
|
51
|
+
color=ft.Colors.SURFACE_TINT,
|
|
52
|
+
size=40,
|
|
53
|
+
weight=ft.FontWeight.BOLD,
|
|
54
|
+
opacity=0.5,
|
|
55
|
+
)
|
|
56
|
+
],
|
|
57
|
+
),
|
|
58
|
+
],
|
|
59
|
+
)
|
|
60
|
+
```
|
|
34
61
|
"""
|
|
35
62
|
|
|
36
63
|
controls: list[Control] = field(default_factory=list)
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from dataclasses import dataclass, field
|
|
2
2
|
from typing import Optional
|
|
3
3
|
|
|
4
|
+
from flet import LayoutControl
|
|
4
5
|
from flet.controls.base_control import control
|
|
5
|
-
from flet.controls.
|
|
6
|
-
from flet.controls.control_event import Event, EventHandler
|
|
6
|
+
from flet.controls.control_event import ControlEventHandler, Event, EventHandler
|
|
7
7
|
from flet.controls.types import Number
|
|
8
8
|
|
|
9
9
|
__all__ = ["AutoComplete", "AutoCompleteSelectEvent", "AutoCompleteSuggestion"]
|
|
@@ -11,22 +11,45 @@ __all__ = ["AutoComplete", "AutoCompleteSelectEvent", "AutoCompleteSuggestion"]
|
|
|
11
11
|
|
|
12
12
|
@dataclass
|
|
13
13
|
class AutoCompleteSuggestion:
|
|
14
|
+
"""
|
|
15
|
+
Represents a suggestion item for the [`AutoComplete`][flet.] control.
|
|
16
|
+
"""
|
|
17
|
+
|
|
14
18
|
key: str
|
|
19
|
+
"""A unique identifier or value used for filtering and selection."""
|
|
20
|
+
|
|
15
21
|
value: str
|
|
22
|
+
"""The display text shown to the user."""
|
|
16
23
|
|
|
17
24
|
|
|
18
25
|
@dataclass
|
|
19
26
|
class AutoCompleteSelectEvent(Event["AutoComplete"]):
|
|
27
|
+
"""Event representing the selection of a suggestion in the AutoComplete control."""
|
|
28
|
+
|
|
29
|
+
index: int
|
|
30
|
+
"""
|
|
31
|
+
The index of the selected suggestion from the corresponding
|
|
32
|
+
[`AutoComplete.suggestions`][flet.] list.
|
|
33
|
+
"""
|
|
34
|
+
|
|
20
35
|
selection: AutoCompleteSuggestion
|
|
36
|
+
"""The selected suggestion."""
|
|
21
37
|
|
|
22
38
|
|
|
23
39
|
@control("AutoComplete")
|
|
24
|
-
class AutoComplete(
|
|
40
|
+
class AutoComplete(LayoutControl):
|
|
25
41
|
"""
|
|
26
42
|
Helps the user make a selection by entering some text and choosing from among a
|
|
27
43
|
list of displayed options.
|
|
28
44
|
"""
|
|
29
45
|
|
|
46
|
+
value: str = ""
|
|
47
|
+
"""
|
|
48
|
+
Current text displayed in the input field.
|
|
49
|
+
|
|
50
|
+
This value reflects user input even if it does not match any provided suggestion.
|
|
51
|
+
"""
|
|
52
|
+
|
|
30
53
|
suggestions: list[AutoCompleteSuggestion] = field(default_factory=list)
|
|
31
54
|
"""
|
|
32
55
|
A list of [`AutoCompleteSuggestion`][flet.]
|
|
@@ -53,7 +76,19 @@ class AutoComplete(Control):
|
|
|
53
76
|
Called when a suggestion is selected.
|
|
54
77
|
"""
|
|
55
78
|
|
|
79
|
+
on_change: Optional[ControlEventHandler["AutoComplete"]] = None
|
|
80
|
+
"""
|
|
81
|
+
Called when the input text changes.
|
|
82
|
+
"""
|
|
83
|
+
|
|
56
84
|
@property
|
|
57
|
-
def selected_index(self):
|
|
58
|
-
|
|
59
|
-
|
|
85
|
+
def selected_index(self) -> Optional[int]:
|
|
86
|
+
"""
|
|
87
|
+
The index of the (last) selected suggestion.
|
|
88
|
+
|
|
89
|
+
It is `None` until a suggestion has been selected from the UI.
|
|
90
|
+
|
|
91
|
+
Note:
|
|
92
|
+
This property is read-only.
|
|
93
|
+
"""
|
|
94
|
+
return getattr(self, "_selected_index", None)
|
|
@@ -80,7 +80,7 @@ class MenuItemButton(LayoutControl):
|
|
|
80
80
|
|
|
81
81
|
on_click: Optional[ControlEventHandler["MenuItemButton"]] = None
|
|
82
82
|
"""
|
|
83
|
-
Called when the button is clicked.
|
|
83
|
+
Called when the button is clicked.If not defined the button will be disabled.
|
|
84
84
|
"""
|
|
85
85
|
|
|
86
86
|
on_hover: Optional[ControlEventHandler["MenuItemButton"]] = None
|
|
@@ -19,6 +19,25 @@ class SubmenuButton(LayoutControl):
|
|
|
19
19
|
A menu button that displays a cascading menu.
|
|
20
20
|
|
|
21
21
|
Typically used in a [`MenuBar`][flet.] control.
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
ft.SubmenuButton(
|
|
25
|
+
content=ft.Text("Choose text style"),
|
|
26
|
+
key="smbutton",
|
|
27
|
+
expand=True,
|
|
28
|
+
menu_style=ft.MenuStyle(
|
|
29
|
+
alignment=ft.Alignment.BOTTOM_LEFT, side=ft.BorderSide(1)
|
|
30
|
+
),
|
|
31
|
+
controls=[
|
|
32
|
+
ft.MenuItemButton(
|
|
33
|
+
content=ft.Text("Underlined"),
|
|
34
|
+
on_click=lambda e: print(f"{e.control.content.value}.on_click")
|
|
35
|
+
),
|
|
36
|
+
ft.MenuItemButton(...),
|
|
37
|
+
...
|
|
38
|
+
]
|
|
39
|
+
)
|
|
40
|
+
```
|
|
22
41
|
"""
|
|
23
42
|
|
|
24
43
|
content: Optional[StrOrControl] = None
|
|
@@ -26,6 +26,11 @@ class Switch(LayoutControl, AdaptiveControl):
|
|
|
26
26
|
two mutually exclusive options.
|
|
27
27
|
|
|
28
28
|
For example, "On/Off", "Show/Hide".
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
ft.Switch(label="Unchecked switch", value=False)
|
|
32
|
+
ft.Switch(label="Disabled switch", disabled=True)
|
|
33
|
+
```
|
|
29
34
|
"""
|
|
30
35
|
|
|
31
36
|
label: Optional[StrOrControl] = None
|
|
@@ -22,6 +22,14 @@ class TextButton(LayoutControl, AdaptiveControl):
|
|
|
22
22
|
Text buttons are used for the lowest priority actions, especially when presenting
|
|
23
23
|
multiple options. Text buttons can be placed on a variety of backgrounds. Until the
|
|
24
24
|
button is interacted with, its container isn’t visible.
|
|
25
|
+
|
|
26
|
+
```python
|
|
27
|
+
ft.TextButton(
|
|
28
|
+
content="Text Button",
|
|
29
|
+
icon=ft.Icons.STAR_BORDER,
|
|
30
|
+
icon_color=ft.Colors.BLUE_300,
|
|
31
|
+
)
|
|
32
|
+
```
|
|
25
33
|
"""
|
|
26
34
|
|
|
27
35
|
content: Optional[StrOrControl] = None
|
|
@@ -38,6 +38,14 @@ class TimePicker(DialogControl):
|
|
|
38
38
|
|
|
39
39
|
Depending on the `time_picker_entry_mode`, it will show either a Dial or
|
|
40
40
|
an Input (hour and minute text fields) for picking a time.
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
ft.TimePicker(
|
|
44
|
+
value=time(1, 2),
|
|
45
|
+
time_picker_entry_mode=ft.TimePickerEntryMode.INPUT_ONLY,
|
|
46
|
+
open=True,
|
|
47
|
+
)
|
|
48
|
+
```
|
|
41
49
|
"""
|
|
42
50
|
|
|
43
51
|
value: Optional[time] = field(default_factory=lambda: datetime.now().time())
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
from collections.abc import Callable
|
|
2
|
-
from dataclasses import dataclass
|
|
3
|
-
from typing import Any, TypeVar
|
|
4
|
-
|
|
5
|
-
from flet.components.hooks.hook import Hook
|
|
6
|
-
from flet.components.observable import Observable, ObservableSubscription
|
|
7
|
-
from flet.components.utils import current_component
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@dataclass
|
|
11
|
-
class StateHook(Hook):
|
|
12
|
-
value: Any
|
|
13
|
-
subscription: ObservableSubscription | None = None
|
|
14
|
-
version: int = 0
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
StateT = TypeVar("StateT")
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def use_state(
|
|
21
|
-
initial: StateT | Callable[[], StateT],
|
|
22
|
-
) -> tuple[StateT, Callable[[StateT], None]]:
|
|
23
|
-
"""
|
|
24
|
-
Add state to function components.
|
|
25
|
-
|
|
26
|
-
Args:
|
|
27
|
-
initial: Initial state value or a function that returns the initial state value.
|
|
28
|
-
|
|
29
|
-
Returns:
|
|
30
|
-
A tuple of the current state value and a function to update it.
|
|
31
|
-
"""
|
|
32
|
-
component = current_component()
|
|
33
|
-
hook = component.use_hook(
|
|
34
|
-
lambda: StateHook(
|
|
35
|
-
component,
|
|
36
|
-
initial() if callable(initial) else initial,
|
|
37
|
-
)
|
|
38
|
-
)
|
|
39
|
-
|
|
40
|
-
def update_subscription(hook: StateHook):
|
|
41
|
-
if hook.subscription:
|
|
42
|
-
component._detach_observable_subscription(hook.subscription)
|
|
43
|
-
hook.subscription = None
|
|
44
|
-
if isinstance(hook.value, Observable):
|
|
45
|
-
hook.subscription = component._attach_observable_subscription(hook.value)
|
|
46
|
-
|
|
47
|
-
update_subscription(hook)
|
|
48
|
-
|
|
49
|
-
def set_state(new_value: Any):
|
|
50
|
-
# shallow equality; swap to "is" or custom comparator if needed
|
|
51
|
-
if new_value != hook.value:
|
|
52
|
-
hook.value = new_value
|
|
53
|
-
update_subscription(hook)
|
|
54
|
-
hook.version += 1
|
|
55
|
-
if hook.component:
|
|
56
|
-
hook.component._schedule_update()
|
|
57
|
-
|
|
58
|
-
return hook.value, set_state
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/github_oauth_provider.py
RENAMED
|
File without changes
|
{flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/auth/providers/google_oauth_provider.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_action_sheet.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flet-0.70.0.dev6370 → flet-0.70.0.dev6412}/src/flet/controls/cupertino/cupertino_alert_dialog.py
RENAMED
|
File without changes
|