diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000000..be19c9d7ac --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,20 @@ +name: Build docs + +on: + workflow_dispatch: + +jobs: + deploy: + name: Build Documentation + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup uv + uses: astral-sh/setup-uv@v6 + + - name: Build docs + working-directory: sdk/python/packages/flet + run: | + uv run --group docs mkdocs build diff --git a/client/pubspec.lock b/client/pubspec.lock index 80f6d5aabd..3588376aeb 100644 --- a/client/pubspec.lock +++ b/client/pubspec.lock @@ -385,10 +385,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: b543301ad291598523947dc534aaddc5aaad597b709d2426d3a0e0d44c5cb493 + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.dev" source: hosted - version: "1.0.4" + version: "6.0.0" flutter_localizations: dependency: transitive description: flutter @@ -626,10 +626,10 @@ packages: dependency: transitive description: name: lints - sha256: a2c3d198cb5ea2e179926622d433331d8b58374ab8f29cdda6e863bd62fd369c + sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "6.0.0" lists: dependency: transitive description: diff --git a/client/pubspec.yaml b/client/pubspec.yaml index ec66619c2c..c64ffcc5f3 100644 --- a/client/pubspec.yaml +++ b/client/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ">=3.8.0 <4.0.0" # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions @@ -92,7 +92,7 @@ dev_dependencies: # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. - flutter_lints: ^1.0.0 + flutter_lints: ^6.0.0 # Docs: https://pub.dev/packages/flutter_launcher_icons flutter_launcher_icons: "^0.14.4" diff --git a/packages/flet/pubspec.yaml b/packages/flet/pubspec.yaml index 996cb72e31..6a5ea8f674 100644 --- a/packages/flet/pubspec.yaml +++ b/packages/flet/pubspec.yaml @@ -14,7 +14,7 @@ platforms: windows: environment: - sdk: '>=3.0.0 <4.0.0' + sdk: ">=3.8.0 <4.0.0" dependencies: flutter: @@ -49,7 +49,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.1 + flutter_lints: ^6.0.0 flutter: diff --git a/sdk/python/examples/controls/ads/__init__.py b/sdk/python/examples/controls/ads/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/ads/example_1.py b/sdk/python/examples/controls/ads/example_1.py index 0a0e1d8d02..2e5d244663 100644 --- a/sdk/python/examples/controls/ads/example_1.py +++ b/sdk/python/examples/controls/ads/example_1.py @@ -1,6 +1,5 @@ -import flet_ads as fta - import flet as ft +import flet_ads as fta def main(page: ft.Page): @@ -77,4 +76,5 @@ def get_new_banner_ad() -> ft.Container: ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/alert_dialog/media/adaptive_dialog_action.png b/sdk/python/examples/controls/alert_dialog/media/adaptive_dialog_action.png deleted file mode 100644 index 3ef63c5882..0000000000 Binary files a/sdk/python/examples/controls/alert_dialog/media/adaptive_dialog_action.png and /dev/null differ diff --git a/sdk/python/examples/controls/alert_dialog/media/index.png b/sdk/python/examples/controls/alert_dialog/media/index.png deleted file mode 100644 index cd343abceb..0000000000 Binary files a/sdk/python/examples/controls/alert_dialog/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/alert_dialog/media/modal_and_non_modal.gif b/sdk/python/examples/controls/alert_dialog/media/modal_and_non_modal.gif deleted file mode 100644 index 796e5af5e6..0000000000 Binary files a/sdk/python/examples/controls/alert_dialog/media/modal_and_non_modal.gif and /dev/null differ diff --git a/sdk/python/examples/controls/animated_switcher/__init__.py b/sdk/python/examples/controls/animated_switcher/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/animated_switcher/image_switch.py b/sdk/python/examples/controls/animated_switcher/image_switch.py index 57dd38a392..327772f6b5 100644 --- a/sdk/python/examples/controls/animated_switcher/image_switch.py +++ b/sdk/python/examples/controls/animated_switcher/image_switch.py @@ -29,4 +29,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/animated_switcher/image_switch_buffered.py b/sdk/python/examples/controls/animated_switcher/image_switch_buffered.py index 203b732c5d..ddd4cefe36 100644 --- a/sdk/python/examples/controls/animated_switcher/image_switch_buffered.py +++ b/sdk/python/examples/controls/animated_switcher/image_switch_buffered.py @@ -63,4 +63,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/animated_switcher/media/scale_effect.gif b/sdk/python/examples/controls/animated_switcher/media/scale_effect.gif deleted file mode 100644 index 70010844ea..0000000000 Binary files a/sdk/python/examples/controls/animated_switcher/media/scale_effect.gif and /dev/null differ diff --git a/sdk/python/examples/controls/animated_switcher/scale_effect.py b/sdk/python/examples/controls/animated_switcher/scale_effect.py index eeef63638f..fd87188080 100644 --- a/sdk/python/examples/controls/animated_switcher/scale_effect.py +++ b/sdk/python/examples/controls/animated_switcher/scale_effect.py @@ -48,4 +48,5 @@ def rotate(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/app_bar/__init__.py b/sdk/python/examples/controls/app_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/app_bar/media/actions_and_popup_menu.gif b/sdk/python/examples/controls/app_bar/media/actions_and_popup_menu.gif deleted file mode 100644 index 3ce841fc91..0000000000 Binary files a/sdk/python/examples/controls/app_bar/media/actions_and_popup_menu.gif and /dev/null differ diff --git a/sdk/python/examples/controls/app_bar/media/index.png b/sdk/python/examples/controls/app_bar/media/index.png deleted file mode 100644 index 61336e5bd2..0000000000 Binary files a/sdk/python/examples/controls/app_bar/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/app_bar/theme_and_material_mode_toggles.py b/sdk/python/examples/controls/app_bar/theme_and_material_mode_toggles.py index b2eda194b8..c3874712d5 100644 --- a/sdk/python/examples/controls/app_bar/theme_and_material_mode_toggles.py +++ b/sdk/python/examples/controls/app_bar/theme_and_material_mode_toggles.py @@ -108,4 +108,5 @@ def toggle_material(e: ft.Event[ft.IconButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/audio/__init__.py b/sdk/python/examples/controls/audio/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/audio/declarative_1.py b/sdk/python/examples/controls/audio/declarative_1.py index 1289e9d4e1..8e2ae142c7 100644 --- a/sdk/python/examples/controls/audio/declarative_1.py +++ b/sdk/python/examples/controls/audio/declarative_1.py @@ -40,4 +40,5 @@ async def resume(): ] -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/audio/example_1.py b/sdk/python/examples/controls/audio/example_1.py index f4cb7e58c2..de71e0e466 100644 --- a/sdk/python/examples/controls/audio/example_1.py +++ b/sdk/python/examples/controls/audio/example_1.py @@ -1,10 +1,13 @@ -import flet_audio as fta - import flet as ft +import flet_audio as fta def main(page: ft.Page): - url = "https://github.com/mdn/webaudio-examples/blob/main/audio-analyser/viper.mp3?raw=true" + url = "https://luan.xyz/files/audio/ambient_c_motion.mp3" + + def log(message: str): + page.show_dialog(ft.SnackBar(content=message)) + print(message) async def play(): await audio.play() @@ -20,6 +23,7 @@ async def release(): def set_volume(value: float): audio.volume += value + log(f"Volume: {audio.volume}") def set_balance(value: float): audio.balance += value @@ -29,22 +33,22 @@ async def seek_2s(): async def get_duration(): duration = await audio.get_duration() - print("Duration:", duration) + log(f"Duration: {duration}") async def on_get_current_position(): position = await audio.get_current_position() - print("Current position:", position) + log(f"Current position: {position}") audio = fta.Audio( src=url, autoplay=False, volume=1, balance=0, - on_loaded=lambda _: print("Loaded"), - on_duration_change=lambda e: print("Duration changed:", e.duration), - on_position_change=lambda e: print("Position changed:", e.position), - on_state_change=lambda e: print("State changed:", e.state), - on_seek_complete=lambda _: print("Seek complete"), + on_loaded=lambda _: log("Loaded"), + on_duration_change=lambda e: print(f"Duration changed: {e.duration}"), + on_position_change=lambda e: print(f"Position changed: {e.position}"), + on_state_change=lambda e: log(f"State changed: {e.state}"), + on_seek_complete=lambda _: log("Seek complete"), ) page.add( @@ -70,4 +74,5 @@ async def on_get_current_position(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/audio_recorder/__init__.py b/sdk/python/examples/controls/audio_recorder/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/audio_recorder/example_1.py b/sdk/python/examples/controls/audio_recorder/example_1.py index b88cbd03d8..bc410b4b25 100644 --- a/sdk/python/examples/controls/audio_recorder/example_1.py +++ b/sdk/python/examples/controls/audio_recorder/example_1.py @@ -1,10 +1,5 @@ -import logging - -import flet_audio_recorder as far - import flet as ft - -logging.basicConfig(level=logging.DEBUG) +import flet_audio_recorder as far def main(page: ft.Page): @@ -43,7 +38,7 @@ async def handle_pause(e: ft.Event[ft.Button]): await recorder.pause_recording() async def handle_resume(e: ft.Event[ft.Button]): - print(f"isPaused: {await recorder.is_paused()}") + print(f"is_paused: {await recorder.is_paused()}") if await recorder.is_paused(): await recorder.resume_recording() @@ -69,4 +64,5 @@ async def handle_audio_encoder_test(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/auto_complete/__init__.py b/sdk/python/examples/controls/auto_complete/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/auto_complete/basic.py b/sdk/python/examples/controls/auto_complete/basic.py index 750a331e4d..b5baa8cd9c 100644 --- a/sdk/python/examples/controls/auto_complete/basic.py +++ b/sdk/python/examples/controls/auto_complete/basic.py @@ -43,4 +43,5 @@ def handle_select(e: ft.AutoCompleteSelectEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/autofill_group/__init__.py b/sdk/python/examples/controls/autofill_group/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/autofill_group/basic.py b/sdk/python/examples/controls/autofill_group/basic.py index 0d630481b8..477c85a790 100644 --- a/sdk/python/examples/controls/autofill_group/basic.py +++ b/sdk/python/examples/controls/autofill_group/basic.py @@ -32,4 +32,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/autofill_group/media/basic.gif b/sdk/python/examples/controls/autofill_group/media/basic.gif deleted file mode 100644 index ccbbf5c4b9..0000000000 Binary files a/sdk/python/examples/controls/autofill_group/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/banner/__init__.py b/sdk/python/examples/controls/banner/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/banner/basic.py b/sdk/python/examples/controls/banner/basic.py index b9512478d6..ce20f2d41c 100644 --- a/sdk/python/examples/controls/banner/basic.py +++ b/sdk/python/examples/controls/banner/basic.py @@ -42,4 +42,5 @@ def handle_banner_close(e: ft.Event[ft.TextButton]): page.add(ft.Button("Show Banner", on_click=lambda e: page.show_dialog(banner))) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/banner/media/basic.gif b/sdk/python/examples/controls/banner/media/basic.gif deleted file mode 100644 index 58271ae1f1..0000000000 Binary files a/sdk/python/examples/controls/banner/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/bursting_flet.py b/sdk/python/examples/controls/bursting_flet.py index b066355bbe..9b629c8bd2 100644 --- a/sdk/python/examples/controls/bursting_flet.py +++ b/sdk/python/examples/controls/bursting_flet.py @@ -29,4 +29,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/button/media/adaptive.png b/sdk/python/examples/controls/button/media/adaptive.png deleted file mode 100644 index 64405df7cb..0000000000 Binary files a/sdk/python/examples/controls/button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/button/media/basic.png b/sdk/python/examples/controls/button/media/basic.png deleted file mode 100644 index 93b513e460..0000000000 Binary files a/sdk/python/examples/controls/button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/button/media/custom_content.png b/sdk/python/examples/controls/button/media/custom_content.png deleted file mode 100644 index 1786efb255..0000000000 Binary files a/sdk/python/examples/controls/button/media/custom_content.png and /dev/null differ diff --git a/sdk/python/examples/controls/button/media/handling_clicks.gif b/sdk/python/examples/controls/button/media/handling_clicks.gif deleted file mode 100644 index de5963a703..0000000000 Binary files a/sdk/python/examples/controls/button/media/handling_clicks.gif and /dev/null differ diff --git a/sdk/python/examples/controls/button/media/icons.png b/sdk/python/examples/controls/button/media/icons.png deleted file mode 100644 index f588eded02..0000000000 Binary files a/sdk/python/examples/controls/button/media/icons.png and /dev/null differ diff --git a/sdk/python/examples/controls/button/media/index.png b/sdk/python/examples/controls/button/media/index.png deleted file mode 100644 index 068570191f..0000000000 Binary files a/sdk/python/examples/controls/button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/__init__.py b/sdk/python/examples/controls/canvas/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/canvas/bezier_curves.py b/sdk/python/examples/controls/canvas/bezier_curves.py index 020c43fc9d..08528a6412 100644 --- a/sdk/python/examples/controls/canvas/bezier_curves.py +++ b/sdk/python/examples/controls/canvas/bezier_curves.py @@ -62,4 +62,5 @@ def main(page: ft.Page): page.add(cp) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/brush.py b/sdk/python/examples/controls/canvas/brush.py index 0140b98cb5..9b1fee280a 100644 --- a/sdk/python/examples/controls/canvas/brush.py +++ b/sdk/python/examples/controls/canvas/brush.py @@ -88,4 +88,5 @@ async def save_image(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/brush_on_image.py b/sdk/python/examples/controls/canvas/brush_on_image.py index cec24534d3..99979cf848 100644 --- a/sdk/python/examples/controls/canvas/brush_on_image.py +++ b/sdk/python/examples/controls/canvas/brush_on_image.py @@ -57,4 +57,5 @@ def handle_pan_update(e: ft.DragUpdateEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/dash_strokes.py b/sdk/python/examples/controls/canvas/dash_strokes.py index 51eb09e2fd..382c01ffb8 100644 --- a/sdk/python/examples/controls/canvas/dash_strokes.py +++ b/sdk/python/examples/controls/canvas/dash_strokes.py @@ -110,4 +110,5 @@ def App(): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/canvas/flet_logo.py b/sdk/python/examples/controls/canvas/flet_logo.py index 6d96d2202d..6e827fd783 100644 --- a/sdk/python/examples/controls/canvas/flet_logo.py +++ b/sdk/python/examples/controls/canvas/flet_logo.py @@ -41,4 +41,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/gradients.py b/sdk/python/examples/controls/canvas/gradients.py index fe2b161bda..88858937b6 100644 --- a/sdk/python/examples/controls/canvas/gradients.py +++ b/sdk/python/examples/controls/canvas/gradients.py @@ -68,4 +68,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/media/bezier_curves.png b/sdk/python/examples/controls/canvas/media/bezier_curves.png deleted file mode 100644 index 874240904a..0000000000 Binary files a/sdk/python/examples/controls/canvas/media/bezier_curves.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/media/flet_logo.png b/sdk/python/examples/controls/canvas/media/flet_logo.png deleted file mode 100644 index d03648c657..0000000000 Binary files a/sdk/python/examples/controls/canvas/media/flet_logo.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/media/smiling_face.png b/sdk/python/examples/controls/canvas/media/smiling_face.png deleted file mode 100644 index 024cff9cec..0000000000 Binary files a/sdk/python/examples/controls/canvas/media/smiling_face.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/media/text.png b/sdk/python/examples/controls/canvas/media/text.png deleted file mode 100644 index e046b77a16..0000000000 Binary files a/sdk/python/examples/controls/canvas/media/text.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/media/triangles.png b/sdk/python/examples/controls/canvas/media/triangles.png deleted file mode 100644 index 593913dfa6..0000000000 Binary files a/sdk/python/examples/controls/canvas/media/triangles.png and /dev/null differ diff --git a/sdk/python/examples/controls/canvas/resize.py b/sdk/python/examples/controls/canvas/resize.py index 0751942af9..f545c1bf74 100644 --- a/sdk/python/examples/controls/canvas/resize.py +++ b/sdk/python/examples/controls/canvas/resize.py @@ -29,4 +29,5 @@ def paint_resize(e: cv.CanvasResizeEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/smiling_face.py b/sdk/python/examples/controls/canvas/smiling_face.py index 68361350c2..594f9c7cfd 100644 --- a/sdk/python/examples/controls/canvas/smiling_face.py +++ b/sdk/python/examples/controls/canvas/smiling_face.py @@ -32,4 +32,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/text.py b/sdk/python/examples/controls/canvas/text.py index 8a8d69e0ab..0439627d78 100644 --- a/sdk/python/examples/controls/canvas/text.py +++ b/sdk/python/examples/controls/canvas/text.py @@ -92,4 +92,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/canvas/triangles.py b/sdk/python/examples/controls/canvas/triangles.py index bb3c0d1092..8081264198 100644 --- a/sdk/python/examples/controls/canvas/triangles.py +++ b/sdk/python/examples/controls/canvas/triangles.py @@ -30,4 +30,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/card/media/music_info.gif b/sdk/python/examples/controls/card/media/music_info.gif deleted file mode 100644 index 63aff20eaa..0000000000 Binary files a/sdk/python/examples/controls/card/media/music_info.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/__init__.py b/sdk/python/examples/controls/charts/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/bar_chart/__init__.py b/sdk/python/examples/controls/charts/bar_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/bar_chart/example_1.py b/sdk/python/examples/controls/charts/bar_chart/example_1.py index 98029dc971..fb1c91fd98 100644 --- a/sdk/python/examples/controls/charts/bar_chart/example_1.py +++ b/sdk/python/examples/controls/charts/bar_chart/example_1.py @@ -93,4 +93,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/bar_chart/example_2.py b/sdk/python/examples/controls/charts/bar_chart/example_2.py index 6acdc099b8..9040814292 100644 --- a/sdk/python/examples/controls/charts/bar_chart/example_2.py +++ b/sdk/python/examples/controls/charts/bar_chart/example_2.py @@ -1,6 +1,5 @@ -import flet_charts as fch - import flet as ft +import flet_charts as fch class CustomRod(fch.BarChartRod): @@ -70,4 +69,5 @@ def on_chart_event(e: fch.BarChartEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/bar_chart/media/example_1.png b/sdk/python/examples/controls/charts/bar_chart/media/example_1.png deleted file mode 100644 index f078a20f3c..0000000000 Binary files a/sdk/python/examples/controls/charts/bar_chart/media/example_1.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/bar_chart/media/example_2.gif b/sdk/python/examples/controls/charts/bar_chart/media/example_2.gif deleted file mode 100644 index e21fbc62ba..0000000000 Binary files a/sdk/python/examples/controls/charts/bar_chart/media/example_2.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/candlestick_chart/__init__.py b/sdk/python/examples/controls/charts/candlestick_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/candlestick_chart/example_1.py b/sdk/python/examples/controls/charts/candlestick_chart/example_1.py index 4cfb62c259..21e631dd81 100644 --- a/sdk/python/examples/controls/charts/candlestick_chart/example_1.py +++ b/sdk/python/examples/controls/charts/candlestick_chart/example_1.py @@ -124,4 +124,5 @@ def handle_event(e: fch.CandlestickChartEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/candlestick_chart/media/example_1.png b/sdk/python/examples/controls/charts/candlestick_chart/media/example_1.png deleted file mode 100644 index 2563a3ff1c..0000000000 Binary files a/sdk/python/examples/controls/charts/candlestick_chart/media/example_1.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/line_chart/__init__.py b/sdk/python/examples/controls/charts/line_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/line_chart/dashboard_declarative.py b/sdk/python/examples/controls/charts/line_chart/dashboard_declarative.py index 20f7481e19..fe60a54fdc 100644 --- a/sdk/python/examples/controls/charts/line_chart/dashboard_declarative.py +++ b/sdk/python/examples/controls/charts/line_chart/dashboard_declarative.py @@ -134,4 +134,5 @@ def App(): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/charts/line_chart/example_1.py b/sdk/python/examples/controls/charts/line_chart/example_1.py index 50b0f6f4b6..8dc2bd9557 100644 --- a/sdk/python/examples/controls/charts/line_chart/example_1.py +++ b/sdk/python/examples/controls/charts/line_chart/example_1.py @@ -1,6 +1,5 @@ -import flet_charts as fch - import flet as ft +import flet_charts as fch class State: @@ -203,4 +202,5 @@ def toggle_data(e: ft.Event[ft.IconButton]): page.add(ft.IconButton(ft.Icons.REFRESH, on_click=toggle_data), chart) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/line_chart/example_2.py b/sdk/python/examples/controls/charts/line_chart/example_2.py index be384be542..e541023cc2 100644 --- a/sdk/python/examples/controls/charts/line_chart/example_2.py +++ b/sdk/python/examples/controls/charts/line_chart/example_2.py @@ -136,4 +136,5 @@ def toggle_data(e: ft.Event[ft.ElevatedButton]): page.add(ft.Button("avg", on_click=toggle_data), chart) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/line_chart/media/example_1.gif b/sdk/python/examples/controls/charts/line_chart/media/example_1.gif deleted file mode 100644 index 00f0f16d25..0000000000 Binary files a/sdk/python/examples/controls/charts/line_chart/media/example_1.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/line_chart/media/example_2.gif b/sdk/python/examples/controls/charts/line_chart/media/example_2.gif deleted file mode 100644 index 38b70098d2..0000000000 Binary files a/sdk/python/examples/controls/charts/line_chart/media/example_2.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/3d.py b/sdk/python/examples/controls/charts/matplotlib_chart/3d.py index 3ec3eb65c4..66099ad61f 100644 --- a/sdk/python/examples/controls/charts/matplotlib_chart/3d.py +++ b/sdk/python/examples/controls/charts/matplotlib_chart/3d.py @@ -1,13 +1,9 @@ -import logging - import matplotlib.pyplot as plt import numpy as np import flet as ft import flet_charts -logging.basicConfig(level=logging.INFO) - def main(page: ft.Page): plt.style.use("_mpl-gallery") @@ -33,4 +29,5 @@ def main(page: ft.Page): page.add(flet_charts.MatplotlibChartWithToolbar(figure=fig)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/__init__.py b/sdk/python/examples/controls/charts/matplotlib_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/animate.py b/sdk/python/examples/controls/charts/matplotlib_chart/animate.py index d2073574e1..dd109dcd7c 100644 --- a/sdk/python/examples/controls/charts/matplotlib_chart/animate.py +++ b/sdk/python/examples/controls/charts/matplotlib_chart/animate.py @@ -1,13 +1,9 @@ -import logging - import matplotlib.pyplot as plt import numpy as np import flet as ft import flet_charts -logging.basicConfig(level=logging.INFO) - state = {} @@ -53,4 +49,5 @@ def update_lines(num, walks, lines): page.add(flet_charts.MatplotlibChartWithToolbar(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/bar_chart.py b/sdk/python/examples/controls/charts/matplotlib_chart/bar_chart.py index a96589826f..b0fb23e225 100644 --- a/sdk/python/examples/controls/charts/matplotlib_chart/bar_chart.py +++ b/sdk/python/examples/controls/charts/matplotlib_chart/bar_chart.py @@ -21,4 +21,5 @@ def main(page: ft.Page): page.add(fch.MatplotlibChart(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/handle_events.py b/sdk/python/examples/controls/charts/matplotlib_chart/handle_events.py index ea3de39d14..6a71831065 100644 --- a/sdk/python/examples/controls/charts/matplotlib_chart/handle_events.py +++ b/sdk/python/examples/controls/charts/matplotlib_chart/handle_events.py @@ -100,4 +100,5 @@ def update(self): page.add(flet_charts.MatplotlibChartWithToolbar(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/matplotlib_chart/toolbar.py b/sdk/python/examples/controls/charts/matplotlib_chart/toolbar.py index 43da77460f..d58c1ead61 100644 --- a/sdk/python/examples/controls/charts/matplotlib_chart/toolbar.py +++ b/sdk/python/examples/controls/charts/matplotlib_chart/toolbar.py @@ -33,4 +33,5 @@ def main(page: ft.Page): page.add(fch.MatplotlibChartWithToolbar(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/pie_chart/__init__.py b/sdk/python/examples/controls/charts/pie_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/pie_chart/example_1.py b/sdk/python/examples/controls/charts/pie_chart/example_1.py index b8acd8931a..8d3af48c1d 100644 --- a/sdk/python/examples/controls/charts/pie_chart/example_1.py +++ b/sdk/python/examples/controls/charts/pie_chart/example_1.py @@ -1,6 +1,5 @@ -import flet_charts as fch - import flet as ft +import flet_charts as fch def main(page: ft.Page): @@ -50,4 +49,5 @@ def on_chart_event(e: fch.PieChartEvent): page.add(chart) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/pie_chart/example_2.py b/sdk/python/examples/controls/charts/pie_chart/example_2.py index 1e48927ca7..97701fb3ac 100644 --- a/sdk/python/examples/controls/charts/pie_chart/example_2.py +++ b/sdk/python/examples/controls/charts/pie_chart/example_2.py @@ -65,4 +65,5 @@ def on_chart_event(e: fch.PieChartEvent): page.add(chart) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/pie_chart/example_3.py b/sdk/python/examples/controls/charts/pie_chart/example_3.py index 9c725da6d5..38d649e74a 100644 --- a/sdk/python/examples/controls/charts/pie_chart/example_3.py +++ b/sdk/python/examples/controls/charts/pie_chart/example_3.py @@ -87,4 +87,5 @@ def on_chart_event(e: fch.PieChartEvent): page.add(chart) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/pie_chart/media/example_1.gif b/sdk/python/examples/controls/charts/pie_chart/media/example_1.gif deleted file mode 100644 index 777f09c758..0000000000 Binary files a/sdk/python/examples/controls/charts/pie_chart/media/example_1.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/pie_chart/media/example_2.gif b/sdk/python/examples/controls/charts/pie_chart/media/example_2.gif deleted file mode 100644 index fb12fbcb47..0000000000 Binary files a/sdk/python/examples/controls/charts/pie_chart/media/example_2.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/pie_chart/media/example_3.gif b/sdk/python/examples/controls/charts/pie_chart/media/example_3.gif deleted file mode 100644 index 148cb5402d..0000000000 Binary files a/sdk/python/examples/controls/charts/pie_chart/media/example_3.gif and /dev/null differ diff --git a/sdk/python/examples/controls/charts/plotly_chart/__init__.py b/sdk/python/examples/controls/charts/plotly_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/plotly_chart/example_1.py b/sdk/python/examples/controls/charts/plotly_chart/example_1.py index 78ad629ab6..c58de4a554 100644 --- a/sdk/python/examples/controls/charts/plotly_chart/example_1.py +++ b/sdk/python/examples/controls/charts/plotly_chart/example_1.py @@ -1,7 +1,7 @@ -import flet_charts as fch import plotly.express as px import flet as ft +import flet_charts as fch def main(page: ft.Page): @@ -11,4 +11,5 @@ def main(page: ft.Page): page.add(fch.PlotlyChart(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/plotly_chart/example_2.py b/sdk/python/examples/controls/charts/plotly_chart/example_2.py index b6e6c98816..e0c2dbbfcd 100644 --- a/sdk/python/examples/controls/charts/plotly_chart/example_2.py +++ b/sdk/python/examples/controls/charts/plotly_chart/example_2.py @@ -1,7 +1,7 @@ -import flet_charts as fch import plotly.express as px import flet as ft +import flet_charts as fch def main(page: ft.Page): @@ -19,4 +19,5 @@ def main(page: ft.Page): page.add(fch.PlotlyChart(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/plotly_chart/example_3.py b/sdk/python/examples/controls/charts/plotly_chart/example_3.py index c7f6bc8838..6127b21f2e 100644 --- a/sdk/python/examples/controls/charts/plotly_chart/example_3.py +++ b/sdk/python/examples/controls/charts/plotly_chart/example_3.py @@ -1,7 +1,7 @@ -import flet_charts as fch import plotly.graph_objects as go import flet as ft +import flet_charts as fch def main(page: ft.Page): @@ -13,4 +13,5 @@ def main(page: ft.Page): page.add(fch.PlotlyChart(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/plotly_chart/example_4.py b/sdk/python/examples/controls/charts/plotly_chart/example_4.py index c121a10370..5db248e784 100644 --- a/sdk/python/examples/controls/charts/plotly_chart/example_4.py +++ b/sdk/python/examples/controls/charts/plotly_chart/example_4.py @@ -1,7 +1,7 @@ -import flet_charts as fch import plotly.graph_objects as go import flet as ft +import flet_charts as fch def main(page: ft.Page): @@ -55,4 +55,5 @@ def main(page: ft.Page): page.add(fch.PlotlyChart(figure=fig, expand=True)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/plotly_chart/media/example_1.png b/sdk/python/examples/controls/charts/plotly_chart/media/example_1.png deleted file mode 100644 index 9aedc455dc..0000000000 Binary files a/sdk/python/examples/controls/charts/plotly_chart/media/example_1.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/plotly_chart/media/example_2.png b/sdk/python/examples/controls/charts/plotly_chart/media/example_2.png deleted file mode 100644 index eef1a04561..0000000000 Binary files a/sdk/python/examples/controls/charts/plotly_chart/media/example_2.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/plotly_chart/media/example_3.png b/sdk/python/examples/controls/charts/plotly_chart/media/example_3.png deleted file mode 100644 index c3ba2dadd5..0000000000 Binary files a/sdk/python/examples/controls/charts/plotly_chart/media/example_3.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/plotly_chart/media/example_4.png b/sdk/python/examples/controls/charts/plotly_chart/media/example_4.png deleted file mode 100644 index de326cd2f5..0000000000 Binary files a/sdk/python/examples/controls/charts/plotly_chart/media/example_4.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/radar_chart/__init__.py b/sdk/python/examples/controls/charts/radar_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/radar_chart/media/example_1.png b/sdk/python/examples/controls/charts/radar_chart/media/example_1.png deleted file mode 100644 index aaebaa547c..0000000000 Binary files a/sdk/python/examples/controls/charts/radar_chart/media/example_1.png and /dev/null differ diff --git a/sdk/python/examples/controls/charts/scatter_chart/__init__.py b/sdk/python/examples/controls/charts/scatter_chart/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/charts/scatter_chart/example_1.py b/sdk/python/examples/controls/charts/scatter_chart/example_1.py index 175af4319f..e3ed0c76cc 100644 --- a/sdk/python/examples/controls/charts/scatter_chart/example_1.py +++ b/sdk/python/examples/controls/charts/scatter_chart/example_1.py @@ -157,4 +157,5 @@ def handle_event(e: fch.ScatterChartEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/charts/scatter_chart/media/example_1.png b/sdk/python/examples/controls/charts/scatter_chart/media/example_1.png deleted file mode 100644 index 1647cf5d37..0000000000 Binary files a/sdk/python/examples/controls/charts/scatter_chart/media/example_1.png and /dev/null differ diff --git a/sdk/python/examples/controls/checkbox/media/basic.gif b/sdk/python/examples/controls/checkbox/media/basic.gif deleted file mode 100644 index 392020d1db..0000000000 Binary files a/sdk/python/examples/controls/checkbox/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/checkbox/media/handling_events.gif b/sdk/python/examples/controls/checkbox/media/handling_events.gif deleted file mode 100644 index dd01bac222..0000000000 Binary files a/sdk/python/examples/controls/checkbox/media/handling_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/checkbox/media/index.png b/sdk/python/examples/controls/checkbox/media/index.png deleted file mode 100644 index 0cf5bb73ed..0000000000 Binary files a/sdk/python/examples/controls/checkbox/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/chip/__init__.py b/sdk/python/examples/controls/chip/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/chip/assist_chips.py b/sdk/python/examples/controls/chip/assist_chips.py index 7bcf78ca3f..188709c0cb 100644 --- a/sdk/python/examples/controls/chip/assist_chips.py +++ b/sdk/python/examples/controls/chip/assist_chips.py @@ -34,4 +34,5 @@ async def handle_chip2_click(e: ft.Event[ft.Chip]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/chip/filter_chips.py b/sdk/python/examples/controls/chip/filter_chips.py index 16e84f61be..aaf1d71a3c 100644 --- a/sdk/python/examples/controls/chip/filter_chips.py +++ b/sdk/python/examples/controls/chip/filter_chips.py @@ -29,4 +29,5 @@ def handle_amenity_selection(e: ft.Event[ft.Chip]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/chip/media/assist_chips.png b/sdk/python/examples/controls/chip/media/assist_chips.png deleted file mode 100644 index 9c086f24fc..0000000000 Binary files a/sdk/python/examples/controls/chip/media/assist_chips.png and /dev/null differ diff --git a/sdk/python/examples/controls/chip/media/filter_chips.png b/sdk/python/examples/controls/chip/media/filter_chips.png deleted file mode 100644 index 77d6ce280b..0000000000 Binary files a/sdk/python/examples/controls/chip/media/filter_chips.png and /dev/null differ diff --git a/sdk/python/examples/controls/circle_avatar/__init__.py b/sdk/python/examples/controls/circle_avatar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/circle_avatar/media/user_avatars.png b/sdk/python/examples/controls/circle_avatar/media/user_avatars.png deleted file mode 100644 index a5143c1c5e..0000000000 Binary files a/sdk/python/examples/controls/circle_avatar/media/user_avatars.png and /dev/null differ diff --git a/sdk/python/examples/controls/circle_avatar/user_avatars.py b/sdk/python/examples/controls/circle_avatar/user_avatars.py index 8841c52d23..cdfd1658c0 100644 --- a/sdk/python/examples/controls/circle_avatar/user_avatars.py +++ b/sdk/python/examples/controls/circle_avatar/user_avatars.py @@ -38,4 +38,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/__init__.py b/sdk/python/examples/controls/column/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/column/alignment.py b/sdk/python/examples/controls/column/alignment.py index d0238ba9be..718b1ebbd0 100644 --- a/sdk/python/examples/controls/column/alignment.py +++ b/sdk/python/examples/controls/column/alignment.py @@ -46,4 +46,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/custom_scrollbar.py b/sdk/python/examples/controls/column/custom_scrollbar.py index 133cb072fb..c12467581b 100644 --- a/sdk/python/examples/controls/column/custom_scrollbar.py +++ b/sdk/python/examples/controls/column/custom_scrollbar.py @@ -55,4 +55,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/horizontal_alignment.py b/sdk/python/examples/controls/column/horizontal_alignment.py index 97145c483f..df19267e69 100644 --- a/sdk/python/examples/controls/column/horizontal_alignment.py +++ b/sdk/python/examples/controls/column/horizontal_alignment.py @@ -46,4 +46,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/infinite_scrolling.py b/sdk/python/examples/controls/column/infinite_scrolling.py index f41263c3f6..c4ff8c88e4 100644 --- a/sdk/python/examples/controls/column/infinite_scrolling.py +++ b/sdk/python/examples/controls/column/infinite_scrolling.py @@ -37,4 +37,5 @@ def on_scroll(e: ft.OnScrollEvent): page.add(ft.Container(cl, border=ft.Border.all(1))) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/media/alignment.png b/sdk/python/examples/controls/column/media/alignment.png deleted file mode 100644 index 5cb61b6d94..0000000000 Binary files a/sdk/python/examples/controls/column/media/alignment.png and /dev/null differ diff --git a/sdk/python/examples/controls/column/media/horizontal_alignment.png b/sdk/python/examples/controls/column/media/horizontal_alignment.png deleted file mode 100644 index ff255796dd..0000000000 Binary files a/sdk/python/examples/controls/column/media/horizontal_alignment.png and /dev/null differ diff --git a/sdk/python/examples/controls/column/media/programmatic_scroll.png b/sdk/python/examples/controls/column/media/programmatic_scroll.png deleted file mode 100644 index 45f1dbd6f5..0000000000 Binary files a/sdk/python/examples/controls/column/media/programmatic_scroll.png and /dev/null differ diff --git a/sdk/python/examples/controls/column/media/scroll_to_key.gif b/sdk/python/examples/controls/column/media/scroll_to_key.gif deleted file mode 100644 index fcacc70114..0000000000 Binary files a/sdk/python/examples/controls/column/media/scroll_to_key.gif and /dev/null differ diff --git a/sdk/python/examples/controls/column/media/spacing.gif b/sdk/python/examples/controls/column/media/spacing.gif deleted file mode 100644 index c826330f66..0000000000 Binary files a/sdk/python/examples/controls/column/media/spacing.gif and /dev/null differ diff --git a/sdk/python/examples/controls/column/media/wrap.gif b/sdk/python/examples/controls/column/media/wrap.gif deleted file mode 100644 index 15bbf7b16c..0000000000 Binary files a/sdk/python/examples/controls/column/media/wrap.gif and /dev/null differ diff --git a/sdk/python/examples/controls/column/programmatic_scroll.py b/sdk/python/examples/controls/column/programmatic_scroll.py index 7b5c15e5a0..c4dbca091b 100644 --- a/sdk/python/examples/controls/column/programmatic_scroll.py +++ b/sdk/python/examples/controls/column/programmatic_scroll.py @@ -51,4 +51,5 @@ async def scroll_to_minus_delta(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/scroll.py b/sdk/python/examples/controls/column/scroll.py index f1f66404d4..39e23abcea 100644 --- a/sdk/python/examples/controls/column/scroll.py +++ b/sdk/python/examples/controls/column/scroll.py @@ -86,4 +86,5 @@ def change_scroll(_): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/scroll_events.py b/sdk/python/examples/controls/column/scroll_events.py index e4d15bbeff..aad19786c8 100644 --- a/sdk/python/examples/controls/column/scroll_events.py +++ b/sdk/python/examples/controls/column/scroll_events.py @@ -23,4 +23,5 @@ def handle_column_scroll(e: ft.OnScrollEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/scroll_to_key.py b/sdk/python/examples/controls/column/scroll_to_key.py index c4fa4ef9c9..6bff5fa1e5 100644 --- a/sdk/python/examples/controls/column/scroll_to_key.py +++ b/sdk/python/examples/controls/column/scroll_to_key.py @@ -84,4 +84,5 @@ async def scroll_d(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/spacing.py b/sdk/python/examples/controls/column/spacing.py index 6baac249f7..a5da08752a 100644 --- a/sdk/python/examples/controls/column/spacing.py +++ b/sdk/python/examples/controls/column/spacing.py @@ -40,4 +40,5 @@ def handle_slider_change(e: ft.Event[ft.Slider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/column/wrap.py b/sdk/python/examples/controls/column/wrap.py index f14daa0e4f..02c1d99992 100644 --- a/sdk/python/examples/controls/column/wrap.py +++ b/sdk/python/examples/controls/column/wrap.py @@ -53,4 +53,5 @@ def handle_slider_change(e: ft.Event[ft.Slider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/__init__.py b/sdk/python/examples/controls/container/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/container/animate_1.py b/sdk/python/examples/controls/container/animate_1.py index 46a5389955..5a6dd9dec6 100644 --- a/sdk/python/examples/controls/container/animate_1.py +++ b/sdk/python/examples/controls/container/animate_1.py @@ -21,4 +21,5 @@ def animate_container(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/animate_2.py b/sdk/python/examples/controls/container/animate_2.py index d891b03259..273f5f9977 100644 --- a/sdk/python/examples/controls/container/animate_2.py +++ b/sdk/python/examples/controls/container/animate_2.py @@ -52,4 +52,5 @@ def animate_container(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/animate_3.py b/sdk/python/examples/controls/container/animate_3.py index cbcf1e1145..7a3b411d87 100644 --- a/sdk/python/examples/controls/container/animate_3.py +++ b/sdk/python/examples/controls/container/animate_3.py @@ -21,4 +21,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/animated_4.py b/sdk/python/examples/controls/container/animated_4.py index 8d95d1ea5d..c22dadf790 100644 --- a/sdk/python/examples/controls/container/animated_4.py +++ b/sdk/python/examples/controls/container/animated_4.py @@ -44,4 +44,5 @@ def hide_menu(e: ft.Event[ft.IconButton]): page.add(ft.Button("Show menu", on_click=show_menu)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/background_color.py b/sdk/python/examples/controls/container/background_color.py index 2247c1cc71..b2176b2576 100644 --- a/sdk/python/examples/controls/container/background_color.py +++ b/sdk/python/examples/controls/container/background_color.py @@ -23,4 +23,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/clickable.py b/sdk/python/examples/controls/container/clickable.py index 793199cb2e..afba8be0b8 100644 --- a/sdk/python/examples/controls/container/clickable.py +++ b/sdk/python/examples/controls/container/clickable.py @@ -32,6 +32,11 @@ def main(page: ft.Page): border_radius=10, on_click=lambda e: print("Clickable without Ink clicked!"), ), + ], + ), + ft.Row( + alignment=ft.MainAxisAlignment.CENTER, + controls=[ ft.Container( content=ft.Text("Clickable with Ink"), margin=10, @@ -60,4 +65,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/handling_clicks.py b/sdk/python/examples/controls/container/handling_clicks.py index 8e0cfe6d54..8b5396904e 100644 --- a/sdk/python/examples/controls/container/handling_clicks.py +++ b/sdk/python/examples/controls/container/handling_clicks.py @@ -103,4 +103,5 @@ def on_tap_down(e): page.add(c, t1, t3, t2) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/handling_hovers.py b/sdk/python/examples/controls/container/handling_hovers.py index a53015a4ef..44702d2b64 100644 --- a/sdk/python/examples/controls/container/handling_hovers.py +++ b/sdk/python/examples/controls/container/handling_hovers.py @@ -17,4 +17,5 @@ def handle_hover(e: ft.Event[ft.Container]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/media/animate_1.gif b/sdk/python/examples/controls/container/media/animate_1.gif deleted file mode 100644 index 445264a5f9..0000000000 Binary files a/sdk/python/examples/controls/container/media/animate_1.gif and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/background_color.png b/sdk/python/examples/controls/container/media/background_color.png deleted file mode 100644 index ba240a0a58..0000000000 Binary files a/sdk/python/examples/controls/container/media/background_color.png and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/clickable.gif b/sdk/python/examples/controls/container/media/clickable.gif deleted file mode 100644 index 0af1500d48..0000000000 Binary files a/sdk/python/examples/controls/container/media/clickable.gif and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/handling_clicks.gif b/sdk/python/examples/controls/container/media/handling_clicks.gif deleted file mode 100644 index 99c1e5e343..0000000000 Binary files a/sdk/python/examples/controls/container/media/handling_clicks.gif and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/handling_hovers.gif b/sdk/python/examples/controls/container/media/handling_hovers.gif deleted file mode 100644 index 708aa9703a..0000000000 Binary files a/sdk/python/examples/controls/container/media/handling_hovers.gif and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/nested_themes_3.gif b/sdk/python/examples/controls/container/media/nested_themes_3.gif deleted file mode 100644 index 6428366e01..0000000000 Binary files a/sdk/python/examples/controls/container/media/nested_themes_3.gif and /dev/null differ diff --git a/sdk/python/examples/controls/container/media/overview_padding_margin_border.png b/sdk/python/examples/controls/container/media/overview_padding_margin_border.png deleted file mode 100644 index d27a86646f..0000000000 Binary files a/sdk/python/examples/controls/container/media/overview_padding_margin_border.png and /dev/null differ diff --git a/sdk/python/examples/controls/container/nested_themes_1.py b/sdk/python/examples/controls/container/nested_themes_1.py index ae92bae5cc..53dc21bb79 100644 --- a/sdk/python/examples/controls/container/nested_themes_1.py +++ b/sdk/python/examples/controls/container/nested_themes_1.py @@ -35,4 +35,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/nested_themes_2.py b/sdk/python/examples/controls/container/nested_themes_2.py index 6374649c59..15c158ec08 100644 --- a/sdk/python/examples/controls/container/nested_themes_2.py +++ b/sdk/python/examples/controls/container/nested_themes_2.py @@ -87,4 +87,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/nested_themes_3.py b/sdk/python/examples/controls/container/nested_themes_3.py index 42f191ce57..4f4b19b1fd 100644 --- a/sdk/python/examples/controls/container/nested_themes_3.py +++ b/sdk/python/examples/controls/container/nested_themes_3.py @@ -56,4 +56,5 @@ def handle_switch_change(e: ft.Event[ft.Switch]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/container/size_aware.py b/sdk/python/examples/controls/container/size_aware.py index bece39311d..675cfc5393 100644 --- a/sdk/python/examples/controls/container/size_aware.py +++ b/sdk/python/examples/controls/container/size_aware.py @@ -38,4 +38,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_action_sheet/__init__.py b/sdk/python/examples/controls/cupertino_action_sheet/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_action_sheet/basic.py b/sdk/python/examples/controls/cupertino_action_sheet/basic.py index a17a30c4ba..dfcd9bfcc6 100644 --- a/sdk/python/examples/controls/cupertino_action_sheet/basic.py +++ b/sdk/python/examples/controls/cupertino_action_sheet/basic.py @@ -49,4 +49,5 @@ def handle_click(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_action_sheet/media/basic.png b/sdk/python/examples/controls/cupertino_action_sheet/media/basic.png deleted file mode 100644 index 6288de3f4b..0000000000 Binary files a/sdk/python/examples/controls/cupertino_action_sheet/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_activity_indicator/__init__.py b/sdk/python/examples/controls/cupertino_activity_indicator/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_activity_indicator/basic.py b/sdk/python/examples/controls/cupertino_activity_indicator/basic.py index e0aaf62d2c..d4701a4fe4 100644 --- a/sdk/python/examples/controls/cupertino_activity_indicator/basic.py +++ b/sdk/python/examples/controls/cupertino_activity_indicator/basic.py @@ -11,4 +11,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_activity_indicator/media/basic.png b/sdk/python/examples/controls/cupertino_activity_indicator/media/basic.png deleted file mode 100644 index 451a779e60..0000000000 Binary files a/sdk/python/examples/controls/cupertino_activity_indicator/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_activity_indicator/progress.py b/sdk/python/examples/controls/cupertino_activity_indicator/progress.py index da74c76db3..fe1d06216d 100644 --- a/sdk/python/examples/controls/cupertino_activity_indicator/progress.py +++ b/sdk/python/examples/controls/cupertino_activity_indicator/progress.py @@ -23,4 +23,5 @@ def handle_progress_change(e: ft.Event[ft.Slider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/__init__.py b/sdk/python/examples/controls/cupertino_alert_dialog/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/cupertino_material_and_adaptive.py b/sdk/python/examples/controls/cupertino_alert_dialog/cupertino_material_and_adaptive.py index 8dc1105614..21788f873a 100644 --- a/sdk/python/examples/controls/cupertino_alert_dialog/cupertino_material_and_adaptive.py +++ b/sdk/python/examples/controls/cupertino_alert_dialog/cupertino_material_and_adaptive.py @@ -72,4 +72,5 @@ def handle_action_click( ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/file_deletion_confirmation.py b/sdk/python/examples/controls/cupertino_alert_dialog/file_deletion_confirmation.py index c98dd53155..7c490715ae 100644 --- a/sdk/python/examples/controls/cupertino_alert_dialog/file_deletion_confirmation.py +++ b/sdk/python/examples/controls/cupertino_alert_dialog/file_deletion_confirmation.py @@ -35,4 +35,5 @@ def handle_action_click(e: ft.Event[ft.CupertinoDialogAction]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive.png b/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive.png deleted file mode 100644 index cd576c97e9..0000000000 Binary files a/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive_dialog_action.png b/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive_dialog_action.png deleted file mode 100644 index 09012f830d..0000000000 Binary files a/sdk/python/examples/controls/cupertino_alert_dialog/media/adaptive_dialog_action.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_alert_dialog/media/file_deletion_confirmation.png b/sdk/python/examples/controls/cupertino_alert_dialog/media/file_deletion_confirmation.png deleted file mode 100644 index f7dd214929..0000000000 Binary files a/sdk/python/examples/controls/cupertino_alert_dialog/media/file_deletion_confirmation.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_app_bar/__init__.py b/sdk/python/examples/controls/cupertino_app_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_app_bar/basic.py b/sdk/python/examples/controls/cupertino_app_bar/basic.py index e6f56be91a..d89c966b24 100644 --- a/sdk/python/examples/controls/cupertino_app_bar/basic.py +++ b/sdk/python/examples/controls/cupertino_app_bar/basic.py @@ -16,4 +16,5 @@ def main(page: ft.Page): page.add(ft.Text("Body!")) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_app_bar/media/basic.png b/sdk/python/examples/controls/cupertino_app_bar/media/basic.png deleted file mode 100644 index 898643d28f..0000000000 Binary files a/sdk/python/examples/controls/cupertino_app_bar/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_app_bar/media/index.png b/sdk/python/examples/controls/cupertino_app_bar/media/index.png deleted file mode 100644 index 07a0a4a056..0000000000 Binary files a/sdk/python/examples/controls/cupertino_app_bar/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_app_bar/theme_mode_toggle.py b/sdk/python/examples/controls/cupertino_app_bar/theme_mode_toggle.py index 5376c73dbf..8f2015ac3c 100644 --- a/sdk/python/examples/controls/cupertino_app_bar/theme_mode_toggle.py +++ b/sdk/python/examples/controls/cupertino_app_bar/theme_mode_toggle.py @@ -38,4 +38,5 @@ def handle_theme_mode_toggle(e: ft.Event[ft.IconButton]): page.add(ft.Text("Body!")) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_button/__init__.py b/sdk/python/examples/controls/cupertino_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_button/basic.py b/sdk/python/examples/controls/cupertino_button/basic.py index 106ce1747e..eb1c8aa674 100644 --- a/sdk/python/examples/controls/cupertino_button/basic.py +++ b/sdk/python/examples/controls/cupertino_button/basic.py @@ -41,4 +41,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_button/media/adaptive.png b/sdk/python/examples/controls/cupertino_button/media/adaptive.png deleted file mode 100644 index 89bcd477d7..0000000000 Binary files a/sdk/python/examples/controls/cupertino_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_button/media/adaptive_icon_button.png b/sdk/python/examples/controls/cupertino_button/media/adaptive_icon_button.png deleted file mode 100644 index 320f88532f..0000000000 Binary files a/sdk/python/examples/controls/cupertino_button/media/adaptive_icon_button.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_button/media/adaptive_tonal_button.png b/sdk/python/examples/controls/cupertino_button/media/adaptive_tonal_button.png deleted file mode 100644 index e671c0aced..0000000000 Binary files a/sdk/python/examples/controls/cupertino_button/media/adaptive_tonal_button.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_button/media/basic.png b/sdk/python/examples/controls/cupertino_button/media/basic.png deleted file mode 100644 index 0f29e96f52..0000000000 Binary files a/sdk/python/examples/controls/cupertino_button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_button/media/index.png b/sdk/python/examples/controls/cupertino_button/media/index.png deleted file mode 100644 index 9beffe16f8..0000000000 Binary files a/sdk/python/examples/controls/cupertino_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_checkbox/__init__.py b/sdk/python/examples/controls/cupertino_checkbox/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_checkbox/cupertino_material_and_adaptive.py b/sdk/python/examples/controls/cupertino_checkbox/cupertino_material_and_adaptive.py index d010a057f2..ed183e626d 100644 --- a/sdk/python/examples/controls/cupertino_checkbox/cupertino_material_and_adaptive.py +++ b/sdk/python/examples/controls/cupertino_checkbox/cupertino_material_and_adaptive.py @@ -13,4 +13,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_checkbox/media/cupertino_material_and_adaptive.png b/sdk/python/examples/controls/cupertino_checkbox/media/cupertino_material_and_adaptive.png deleted file mode 100644 index d2a36f7665..0000000000 Binary files a/sdk/python/examples/controls/cupertino_checkbox/media/cupertino_material_and_adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_checkbox/media/index.png b/sdk/python/examples/controls/cupertino_checkbox/media/index.png deleted file mode 100644 index 20966d826f..0000000000 Binary files a/sdk/python/examples/controls/cupertino_checkbox/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_checkbox/styled.py b/sdk/python/examples/controls/cupertino_checkbox/styled.py index c2bbe8a2e5..0a3d616a29 100644 --- a/sdk/python/examples/controls/cupertino_checkbox/styled.py +++ b/sdk/python/examples/controls/cupertino_checkbox/styled.py @@ -46,4 +46,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_context_menu/__init__.py b/sdk/python/examples/controls/cupertino_context_menu/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_context_menu/basic.py b/sdk/python/examples/controls/cupertino_context_menu/basic.py index aa3a6db369..a5ae010268 100644 --- a/sdk/python/examples/controls/cupertino_context_menu/basic.py +++ b/sdk/python/examples/controls/cupertino_context_menu/basic.py @@ -32,4 +32,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_context_menu/media/basic.gif b/sdk/python/examples/controls/cupertino_context_menu/media/basic.gif deleted file mode 100644 index 88e60f2adb..0000000000 Binary files a/sdk/python/examples/controls/cupertino_context_menu/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_date_picker/__init__.py b/sdk/python/examples/controls/cupertino_date_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_date_picker/basic.py b/sdk/python/examples/controls/cupertino_date_picker/basic.py index 0a8105abb5..8a7da3a25e 100644 --- a/sdk/python/examples/controls/cupertino_date_picker/basic.py +++ b/sdk/python/examples/controls/cupertino_date_picker/basic.py @@ -31,4 +31,5 @@ def handle_date_change(e: ft.Event[ft.CupertinoDatePicker]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_date_picker/media/basic.png b/sdk/python/examples/controls/cupertino_date_picker/media/basic.png deleted file mode 100644 index 79f0fea700..0000000000 Binary files a/sdk/python/examples/controls/cupertino_date_picker/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_filled_button/__init__.py b/sdk/python/examples/controls/cupertino_filled_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_filled_button/basic.py b/sdk/python/examples/controls/cupertino_filled_button/basic.py index 37191fbd27..a8213724f3 100644 --- a/sdk/python/examples/controls/cupertino_filled_button/basic.py +++ b/sdk/python/examples/controls/cupertino_filled_button/basic.py @@ -11,4 +11,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_filled_button/media/adaptive.png b/sdk/python/examples/controls/cupertino_filled_button/media/adaptive.png deleted file mode 100644 index 2edae23641..0000000000 Binary files a/sdk/python/examples/controls/cupertino_filled_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_filled_button/media/basic.png b/sdk/python/examples/controls/cupertino_filled_button/media/basic.png deleted file mode 100644 index fbfbe5e8ab..0000000000 Binary files a/sdk/python/examples/controls/cupertino_filled_button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_list_tile/__init__.py b/sdk/python/examples/controls/cupertino_list_tile/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_list_tile/media/index.png b/sdk/python/examples/controls/cupertino_list_tile/media/index.png deleted file mode 100644 index 9b99cb60c0..0000000000 Binary files a/sdk/python/examples/controls/cupertino_list_tile/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_list_tile/media/notched.png b/sdk/python/examples/controls/cupertino_list_tile/media/notched.png deleted file mode 100644 index 9dbb15b1ee..0000000000 Binary files a/sdk/python/examples/controls/cupertino_list_tile/media/notched.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_list_tile/notched.py b/sdk/python/examples/controls/cupertino_list_tile/notched.py index 44c9d85b6b..84884fd344 100644 --- a/sdk/python/examples/controls/cupertino_list_tile/notched.py +++ b/sdk/python/examples/controls/cupertino_list_tile/notched.py @@ -27,4 +27,5 @@ def handle_tile_click(e: ft.Event[ft.CupertinoListTile]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_navigation_bar/__init__.py b/sdk/python/examples/controls/cupertino_navigation_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_navigation_bar/basic.py b/sdk/python/examples/controls/cupertino_navigation_bar/basic.py index 247b797634..44d4a17b98 100644 --- a/sdk/python/examples/controls/cupertino_navigation_bar/basic.py +++ b/sdk/python/examples/controls/cupertino_navigation_bar/basic.py @@ -31,4 +31,5 @@ def main(page: ft.Page): page.add(ft.SafeArea(content=ft.Text("Body!"))) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_navigation_bar/media/adaptive.png b/sdk/python/examples/controls/cupertino_navigation_bar/media/adaptive.png deleted file mode 100644 index 8ffee75b55..0000000000 Binary files a/sdk/python/examples/controls/cupertino_navigation_bar/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_navigation_bar/media/basic.png b/sdk/python/examples/controls/cupertino_navigation_bar/media/basic.png deleted file mode 100644 index 4f530a9ffe..0000000000 Binary files a/sdk/python/examples/controls/cupertino_navigation_bar/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_navigation_bar/wired.py b/sdk/python/examples/controls/cupertino_navigation_bar/wired.py index 771e8b7441..7d8a4cddf1 100644 --- a/sdk/python/examples/controls/cupertino_navigation_bar/wired.py +++ b/sdk/python/examples/controls/cupertino_navigation_bar/wired.py @@ -42,4 +42,5 @@ def handle_nav_destination_change(e: ft.Event[ft.CupertinoNavigationBar]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_picker/__init__.py b/sdk/python/examples/controls/cupertino_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_picker/fruit_selection.py b/sdk/python/examples/controls/cupertino_picker/fruit_selection.py index ad38f6a3d5..348bcdb292 100644 --- a/sdk/python/examples/controls/cupertino_picker/fruit_selection.py +++ b/sdk/python/examples/controls/cupertino_picker/fruit_selection.py @@ -49,4 +49,5 @@ def handle_selection_change(e: ft.Event[ft.CupertinoPicker]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_picker/media/fruit_selection.gif b/sdk/python/examples/controls/cupertino_picker/media/fruit_selection.gif deleted file mode 100644 index 2afbe7815b..0000000000 Binary files a/sdk/python/examples/controls/cupertino_picker/media/fruit_selection.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_radio/__init__.py b/sdk/python/examples/controls/cupertino_radio/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_radio/basic.py b/sdk/python/examples/controls/cupertino_radio/basic.py index c7d7a3f359..458b47c35f 100644 --- a/sdk/python/examples/controls/cupertino_radio/basic.py +++ b/sdk/python/examples/controls/cupertino_radio/basic.py @@ -35,4 +35,5 @@ def handle_button_click(e: ft.Event[ft.ElevatedButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_radio/cupertino_material_and_adaptive.py b/sdk/python/examples/controls/cupertino_radio/cupertino_material_and_adaptive.py index d54a2e5c28..0102dd0309 100644 --- a/sdk/python/examples/controls/cupertino_radio/cupertino_material_and_adaptive.py +++ b/sdk/python/examples/controls/cupertino_radio/cupertino_material_and_adaptive.py @@ -36,4 +36,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_radio/media/cupertino_material_and_adaptive.png b/sdk/python/examples/controls/cupertino_radio/media/cupertino_material_and_adaptive.png deleted file mode 100644 index 11c8eb3b9c..0000000000 Binary files a/sdk/python/examples/controls/cupertino_radio/media/cupertino_material_and_adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_radio/media/index.png b/sdk/python/examples/controls/cupertino_radio/media/index.png deleted file mode 100644 index 4d484b9095..0000000000 Binary files a/sdk/python/examples/controls/cupertino_radio/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_segmented_button/__init__.py b/sdk/python/examples/controls/cupertino_segmented_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_segmented_button/basic.py b/sdk/python/examples/controls/cupertino_segmented_button/basic.py index 0dcd7d3529..652a3a49e3 100644 --- a/sdk/python/examples/controls/cupertino_segmented_button/basic.py +++ b/sdk/python/examples/controls/cupertino_segmented_button/basic.py @@ -25,4 +25,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_segmented_button/media/basic.gif b/sdk/python/examples/controls/cupertino_segmented_button/media/basic.gif deleted file mode 100644 index 8811892f38..0000000000 Binary files a/sdk/python/examples/controls/cupertino_segmented_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_segmented_button/media/index.png b/sdk/python/examples/controls/cupertino_segmented_button/media/index.png deleted file mode 100644 index 2d4efc4fc7..0000000000 Binary files a/sdk/python/examples/controls/cupertino_segmented_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_segmented_button/segments_padding.py b/sdk/python/examples/controls/cupertino_segmented_button/segments_padding.py index b7879b6e02..52e0bdc980 100644 --- a/sdk/python/examples/controls/cupertino_segmented_button/segments_padding.py +++ b/sdk/python/examples/controls/cupertino_segmented_button/segments_padding.py @@ -60,4 +60,5 @@ def handle_horizontal_change(e: ft.Event[ft.Slider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_slider/__init__.py b/sdk/python/examples/controls/cupertino_slider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_slider/handling_events.py b/sdk/python/examples/controls/cupertino_slider/handling_events.py index 01b4c31b20..1723ec4121 100644 --- a/sdk/python/examples/controls/cupertino_slider/handling_events.py +++ b/sdk/python/examples/controls/cupertino_slider/handling_events.py @@ -34,4 +34,5 @@ def handle_change_end(e: ft.Event[ft.CupertinoSlider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_slider/media/handling_events.gif b/sdk/python/examples/controls/cupertino_slider/media/handling_events.gif deleted file mode 100644 index 6dcc4c7028..0000000000 Binary files a/sdk/python/examples/controls/cupertino_slider/media/handling_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_slider/media/index.png b/sdk/python/examples/controls/cupertino_slider/media/index.png deleted file mode 100644 index 59f0b39282..0000000000 Binary files a/sdk/python/examples/controls/cupertino_slider/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_sliding_segmented_button/__init__.py b/sdk/python/examples/controls/cupertino_sliding_segmented_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_sliding_segmented_button/basic.py b/sdk/python/examples/controls/cupertino_sliding_segmented_button/basic.py index 94100bf757..9047858b64 100644 --- a/sdk/python/examples/controls/cupertino_sliding_segmented_button/basic.py +++ b/sdk/python/examples/controls/cupertino_sliding_segmented_button/basic.py @@ -24,4 +24,5 @@ def handle_selection_change(e: ft.Event[ft.CupertinoSlidingSegmentedButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_sliding_segmented_button/media/basic.gif b/sdk/python/examples/controls/cupertino_sliding_segmented_button/media/basic.gif deleted file mode 100644 index 98d355517e..0000000000 Binary files a/sdk/python/examples/controls/cupertino_sliding_segmented_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_switch/__init__.py b/sdk/python/examples/controls/cupertino_switch/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_switch/cupertino_material_and_adaptive.py b/sdk/python/examples/controls/cupertino_switch/cupertino_material_and_adaptive.py index b6849d3a9f..2dc7e7dab5 100644 --- a/sdk/python/examples/controls/cupertino_switch/cupertino_material_and_adaptive.py +++ b/sdk/python/examples/controls/cupertino_switch/cupertino_material_and_adaptive.py @@ -26,4 +26,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_switch/media/cupertino_material_and_adaptive.gif b/sdk/python/examples/controls/cupertino_switch/media/cupertino_material_and_adaptive.gif deleted file mode 100644 index f17194470a..0000000000 Binary files a/sdk/python/examples/controls/cupertino_switch/media/cupertino_material_and_adaptive.gif and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_switch/media/index.png b/sdk/python/examples/controls/cupertino_switch/media/index.png deleted file mode 100644 index b77a655bd6..0000000000 Binary files a/sdk/python/examples/controls/cupertino_switch/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_text_field/__init__.py b/sdk/python/examples/controls/cupertino_text_field/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_text_field/background_image.py b/sdk/python/examples/controls/cupertino_text_field/background_image.py index 8123f706d2..60aa27bb74 100644 --- a/sdk/python/examples/controls/cupertino_text_field/background_image.py +++ b/sdk/python/examples/controls/cupertino_text_field/background_image.py @@ -15,4 +15,5 @@ async def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_text_field/cupertino_material_and_adaptive.py b/sdk/python/examples/controls/cupertino_text_field/cupertino_material_and_adaptive.py index c579381b9c..dcf47d290c 100644 --- a/sdk/python/examples/controls/cupertino_text_field/cupertino_material_and_adaptive.py +++ b/sdk/python/examples/controls/cupertino_text_field/cupertino_material_and_adaptive.py @@ -19,4 +19,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_text_field/media/cupertino_material_and_adaptive.png b/sdk/python/examples/controls/cupertino_text_field/media/cupertino_material_and_adaptive.png deleted file mode 100644 index 7380142729..0000000000 Binary files a/sdk/python/examples/controls/cupertino_text_field/media/cupertino_material_and_adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_text_field/media/index.png b/sdk/python/examples/controls/cupertino_text_field/media/index.png deleted file mode 100644 index 2af135ae51..0000000000 Binary files a/sdk/python/examples/controls/cupertino_text_field/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/cupertino_timer_picker/__init__.py b/sdk/python/examples/controls/cupertino_timer_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/cupertino_timer_picker/basic.py b/sdk/python/examples/controls/cupertino_timer_picker/basic.py index 80d00ad254..fe522e926b 100644 --- a/sdk/python/examples/controls/cupertino_timer_picker/basic.py +++ b/sdk/python/examples/controls/cupertino_timer_picker/basic.py @@ -44,4 +44,5 @@ def handle_timer_picker_change(e: ft.Event[ft.CupertinoTimerPicker]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/cupertino_timer_picker/media/basic.gif b/sdk/python/examples/controls/cupertino_timer_picker/media/basic.gif deleted file mode 100644 index 75ac9f45e8..0000000000 Binary files a/sdk/python/examples/controls/cupertino_timer_picker/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/data_table/__init__.py b/sdk/python/examples/controls/data_table/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/data_table/basic.py b/sdk/python/examples/controls/data_table/basic.py index 1f5043167d..f5d14dc342 100644 --- a/sdk/python/examples/controls/data_table/basic.py +++ b/sdk/python/examples/controls/data_table/basic.py @@ -36,4 +36,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/data_table/handling_events.py b/sdk/python/examples/controls/data_table/handling_events.py index 9b51a8504a..20151a6943 100644 --- a/sdk/python/examples/controls/data_table/handling_events.py +++ b/sdk/python/examples/controls/data_table/handling_events.py @@ -79,4 +79,5 @@ def handle_column_sort(e: ft.DataColumnSortEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/data_table/media/basic.png b/sdk/python/examples/controls/data_table/media/basic.png deleted file mode 100644 index 2333349a39..0000000000 Binary files a/sdk/python/examples/controls/data_table/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/data_table/media/sortable_and_selectable.png b/sdk/python/examples/controls/data_table/media/sortable_and_selectable.png deleted file mode 100644 index 69d6346e3d..0000000000 Binary files a/sdk/python/examples/controls/data_table/media/sortable_and_selectable.png and /dev/null differ diff --git a/sdk/python/examples/controls/data_table/sortable_and_selectable.py b/sdk/python/examples/controls/data_table/sortable_and_selectable.py index abd425cf91..afebf31648 100644 --- a/sdk/python/examples/controls/data_table/sortable_and_selectable.py +++ b/sdk/python/examples/controls/data_table/sortable_and_selectable.py @@ -42,4 +42,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/datatable2/__init__.py b/sdk/python/examples/controls/datatable2/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/datatable2/data.py b/sdk/python/examples/controls/datatable2/data.py deleted file mode 100644 index 551406225e..0000000000 --- a/sdk/python/examples/controls/datatable2/data.py +++ /dev/null @@ -1,47 +0,0 @@ -from dataclasses import dataclass - - -@dataclass -class Dessert: - name: str - calories: float - fat: float - carbs: float - protein: float - sodium: float - calcium: float - iron: float - - -desserts = [ - Dessert("Frozen Yogurt", 159, 6.0, 24, 4.0, 87, 14, 1), - Dessert("Ice Cream Sandwich", 237, 9.0, 37, 4.3, 129, 8, 1), - Dessert("Eclair", 262, 16.0, 24, 6.0, 337, 6, 7), - Dessert("Cupcake", 305, 3.7, 67, 4.3, 413, 3, 8), - Dessert("Gingerbread", 356, 16.0, 49, 3.9, 327, 7, 16), - Dessert("Jelly Bean", 375, 0.0, 94, 0.0, 50, 0, 0), - Dessert("Lollipop", 392, 0.2, 98, 0.0, 38, 0, 2), - Dessert("Honeycomb", 408, 3.2, 87, 6.5, 562, 0, 45), - Dessert("Donut", 452, 25.0, 51, 4.9, 326, 2, 22), - Dessert("Apple Pie", 518, 26.0, 65, 7.0, 54, 12, 6), - Dessert("Frozen Yougurt with sugar", 168, 6.0, 26, 4.0, 87, 14, 1), - Dessert("Ice Cream Sandwich with sugar", 246, 9.0, 39, 4.3, 129, 8, 1), - Dessert("Eclair with sugar", 271, 16.0, 26, 6.0, 337, 6, 7), - Dessert("Cupcake with sugar", 314, 3.7, 69, 4.3, 413, 3, 8), - Dessert("Gingerbread with sugar", 345, 16.0, 51, 3.9, 327, 7, 16), - Dessert("Jelly Bean with sugar", 364, 0.0, 96, 0.0, 50, 0, 0), - Dessert("Lollipop with sugar", 401, 0.2, 100, 0.0, 38, 0, 2), - Dessert("Honeycomb with sugar", 417, 3.2, 89, 6.5, 562, 0, 45), - Dessert("Donut with sugar", 461, 25.0, 53, 4.9, 326, 2, 22), - Dessert("Apple pie with sugar", 527, 26.0, 67, 7.0, 54, 12, 6), - Dessert("Frozen yougurt with honey", 223, 6.0, 36, 4.0, 87, 14, 1), - Dessert("Ice Cream Sandwich with honey", 301, 9.0, 49, 4.3, 129, 8, 1), - Dessert("Eclair with honey", 326, 16.0, 36, 6.0, 337, 6, 7), - Dessert("Cupcake with honey", 369, 3.7, 79, 4.3, 413, 3, 8), - Dessert("Gingerbread with honey", 420, 16.0, 61, 3.9, 327, 7, 16), - Dessert("Jelly Bean with honey", 439, 0.0, 106, 0.0, 50, 0, 0), - Dessert("Lollipop with honey", 456, 0.2, 110, 0.0, 38, 0, 2), - Dessert("Honeycomb with honey", 472, 3.2, 99, 6.5, 562, 0, 45), - Dessert("Donut with honey", 516, 25.0, 63, 4.9, 326, 2, 22), - Dessert("Apple pie with honey", 582, 26.0, 77, 7.0, 54, 12, 6), -] diff --git a/sdk/python/examples/controls/datatable2/example_1.py b/sdk/python/examples/controls/datatable2/example_1.py index b5a3c56c3b..b981d9015b 100644 --- a/sdk/python/examples/controls/datatable2/example_1.py +++ b/sdk/python/examples/controls/datatable2/example_1.py @@ -1,6 +1,5 @@ -import flet_datatable2 as fdt - import flet as ft +import flet_datatable2 as fdt def main(page: ft.Page): @@ -16,4 +15,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/datatable2/example_2.py b/sdk/python/examples/controls/datatable2/example_2.py index d929e034bf..3876c2da43 100644 --- a/sdk/python/examples/controls/datatable2/example_2.py +++ b/sdk/python/examples/controls/datatable2/example_2.py @@ -1,22 +1,64 @@ -from data import desserts +from dataclasses import dataclass import flet as ft import flet_datatable2 as ftd +@dataclass +class Dessert: + name: str + calories: float + fat: float + carbs: float + protein: float + sodium: float + calcium: float + iron: float + + +desserts = [ + Dessert("Frozen Yogurt", 159, 6.0, 24, 4.0, 87, 14, 1), + Dessert("Ice Cream Sandwich", 237, 9.0, 37, 4.3, 129, 8, 1), + Dessert("Eclair", 262, 16.0, 24, 6.0, 337, 6, 7), + Dessert("Cupcake", 305, 3.7, 67, 4.3, 413, 3, 8), + Dessert("Gingerbread", 356, 16.0, 49, 3.9, 327, 7, 16), + Dessert("Jelly Bean", 375, 0.0, 94, 0.0, 50, 0, 0), + Dessert("Lollipop", 392, 0.2, 98, 0.0, 38, 0, 2), + Dessert("Honeycomb", 408, 3.2, 87, 6.5, 562, 0, 45), + Dessert("Donut", 452, 25.0, 51, 4.9, 326, 2, 22), + Dessert("Apple Pie", 518, 26.0, 65, 7.0, 54, 12, 6), + Dessert("Frozen Yougurt with sugar", 168, 6.0, 26, 4.0, 87, 14, 1), + Dessert("Ice Cream Sandwich with sugar", 246, 9.0, 39, 4.3, 129, 8, 1), + Dessert("Eclair with sugar", 271, 16.0, 26, 6.0, 337, 6, 7), + Dessert("Cupcake with sugar", 314, 3.7, 69, 4.3, 413, 3, 8), + Dessert("Gingerbread with sugar", 345, 16.0, 51, 3.9, 327, 7, 16), + Dessert("Jelly Bean with sugar", 364, 0.0, 96, 0.0, 50, 0, 0), + Dessert("Lollipop with sugar", 401, 0.2, 100, 0.0, 38, 0, 2), + Dessert("Honeycomb with sugar", 417, 3.2, 89, 6.5, 562, 0, 45), + Dessert("Donut with sugar", 461, 25.0, 53, 4.9, 326, 2, 22), + Dessert("Apple pie with sugar", 527, 26.0, 67, 7.0, 54, 12, 6), + Dessert("Frozen yougurt with honey", 223, 6.0, 36, 4.0, 87, 14, 1), + Dessert("Ice Cream Sandwich with honey", 301, 9.0, 49, 4.3, 129, 8, 1), + Dessert("Eclair with honey", 326, 16.0, 36, 6.0, 337, 6, 7), + Dessert("Cupcake with honey", 369, 3.7, 79, 4.3, 413, 3, 8), + Dessert("Gingerbread with honey", 420, 16.0, 61, 3.9, 327, 7, 16), + Dessert("Jelly Bean with honey", 439, 0.0, 106, 0.0, 50, 0, 0), + Dessert("Lollipop with honey", 456, 0.2, 110, 0.0, 38, 0, 2), + Dessert("Honeycomb with honey", 472, 3.2, 99, 6.5, 562, 0, 45), + Dessert("Donut with honey", 516, 25.0, 63, 4.9, 326, 2, 22), + Dessert("Apple pie with honey", 582, 26.0, 77, 7.0, 54, 12, 6), +] + + def main(page: ft.Page): page.vertical_alignment = ft.MainAxisAlignment.CENTER page.horizontal_alignment = ft.CrossAxisAlignment.CENTER - sorted_desserts = list(desserts) - data_table: ftd.DataTable2 | None = None def handle_row_selection_change(e: ft.Event[ftd.DataRow2]): e.control.selected = not e.control.selected e.control.update() def sort_column(e: ft.DataColumnSortEvent): - if data_table is None: - return sorters = [ lambda d: d.name.lower(), lambda d: d.calories, @@ -27,94 +69,70 @@ def sort_column(e: ft.DataColumnSortEvent): lambda d: d.calcium, lambda d: d.iron, ] - sorted_desserts.sort(key=sorters[e.column_index], reverse=not e.ascending) - data_table.rows = get_data_rows(sorted_desserts) - data_table.sort_column_index = e.column_index - data_table.sort_ascending = e.ascending - data_table.update() - def get_data_columns(): - data_columns = [ - ftd.DataColumn2( - label=ft.Text("Name"), - size=ftd.DataColumnSize.L, - on_sort=sort_column, - heading_row_alignment=ft.MainAxisAlignment.START, - ), - ftd.DataColumn2( - label=ft.Text("Calories"), - on_sort=sort_column, - numeric=True, - heading_row_alignment=ft.MainAxisAlignment.END, - ), - ftd.DataColumn2( - label=ft.Text("Fat"), - on_sort=sort_column, - numeric=True, - ), - ftd.DataColumn2( - label=ft.Text("Carbs"), - on_sort=sort_column, - numeric=True, - ), - ftd.DataColumn2( - label=ft.Text("Protein"), - on_sort=sort_column, - numeric=True, - ), - ftd.DataColumn2( - label=ft.Text("Sodium"), - on_sort=sort_column, - numeric=True, - ), - ftd.DataColumn2( - label=ft.Text("Calcium"), - on_sort=sort_column, - numeric=True, - ), - ftd.DataColumn2( - label=ft.Text("Iron"), - on_sort=sort_column, - numeric=True, - ), - ] - return data_columns + table.rows = get_data_rows( + sorted(desserts, key=sorters[e.column_index], reverse=not e.ascending) + ) + table.sort_column_index = e.column_index + table.sort_ascending = e.ascending + table.update() - def get_data_rows(desserts): - data_rows = [] - for dessert in desserts: - data_rows.append( + def get_data_rows(data: list[Dessert]) -> list[ftd.DataRow2]: + rows = [] + for dessert in data: + rows.append( ftd.DataRow2( specific_row_height=50, on_select_change=handle_row_selection_change, cells=[ - ft.DataCell(content=ft.Text(dessert.name)), - ft.DataCell(content=ft.Text(dessert.calories)), - ft.DataCell(content=ft.Text(dessert.fat)), - ft.DataCell(content=ft.Text(dessert.carbs)), - ft.DataCell(content=ft.Text(dessert.protein)), - ft.DataCell(content=ft.Text(dessert.sodium)), - ft.DataCell(content=ft.Text(dessert.calcium)), - ft.DataCell(content=ft.Text(dessert.iron)), + ft.DataCell(content=str(dessert.name)), + ft.DataCell(content=str(dessert.calories)), + ft.DataCell(content=str(dessert.fat)), + ft.DataCell(content=str(dessert.carbs)), + ft.DataCell(content=str(dessert.protein)), + ft.DataCell(content=str(dessert.sodium)), + ft.DataCell(content=str(dessert.calcium)), + ft.DataCell(content=str(dessert.iron)), ], ) ) - return data_rows + return rows - data_table = ftd.DataTable2( - show_checkbox_column=True, - expand=True, - column_spacing=0, - heading_row_color=ft.Colors.SECONDARY_CONTAINER, - horizontal_margin=12, - sort_ascending=True, - bottom_margin=10, - min_width=600, - on_select_all=lambda e: print("All selected"), - columns=get_data_columns(), - rows=get_data_rows(sorted_desserts), + page.add( + table := ftd.DataTable2( + show_checkbox_column=True, + expand=True, + column_spacing=0, + heading_row_color=ft.Colors.SECONDARY_CONTAINER, + horizontal_margin=12, + sort_ascending=True, + bottom_margin=10, + min_width=600, + on_select_all=lambda e: print("All selected"), + rows=get_data_rows(desserts), + columns=[ + ftd.DataColumn2( + label="Name", + size=ftd.DataColumnSize.L, + on_sort=sort_column, + heading_row_alignment=ft.MainAxisAlignment.START, + ), + ftd.DataColumn2( + label="Calories", + on_sort=sort_column, + numeric=True, + heading_row_alignment=ft.MainAxisAlignment.END, + ), + ftd.DataColumn2(label="Fat", numeric=True, on_sort=sort_column), + ftd.DataColumn2(label="Carbs", numeric=True, on_sort=sort_column), + ftd.DataColumn2(label="Protein", numeric=True, on_sort=sort_column), + ftd.DataColumn2(label="Sodium", numeric=True, on_sort=sort_column), + ftd.DataColumn2(label="Calcium", numeric=True, on_sort=sort_column), + ftd.DataColumn2(label="Iron", numeric=True, on_sort=sort_column), + ], + ) ) - page.add(data_table) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/datatable2/media/example_2.gif b/sdk/python/examples/controls/datatable2/media/example_2.gif deleted file mode 100644 index 07fb5a645e..0000000000 Binary files a/sdk/python/examples/controls/datatable2/media/example_2.gif and /dev/null differ diff --git a/sdk/python/examples/controls/date_picker/__init__.py b/sdk/python/examples/controls/date_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/date_picker/basic.py b/sdk/python/examples/controls/date_picker/basic.py index b888792b83..229d047da4 100644 --- a/sdk/python/examples/controls/date_picker/basic.py +++ b/sdk/python/examples/controls/date_picker/basic.py @@ -30,4 +30,5 @@ def handle_dismissal(e: ft.Event[ft.DialogControl]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/date_picker/media/basic.png b/sdk/python/examples/controls/date_picker/media/basic.png deleted file mode 100644 index 392bf883cf..0000000000 Binary files a/sdk/python/examples/controls/date_picker/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/date_range_picker/__init__.py b/sdk/python/examples/controls/date_range_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/date_range_picker/basic.py b/sdk/python/examples/controls/date_range_picker/basic.py index bd59d6dfc6..41f3f2aa30 100644 --- a/sdk/python/examples/controls/date_range_picker/basic.py +++ b/sdk/python/examples/controls/date_range_picker/basic.py @@ -35,4 +35,5 @@ def handle_dismissal(e: ft.Event[ft.DialogControl]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/date_range_picker/media/basic.png b/sdk/python/examples/controls/date_range_picker/media/basic.png deleted file mode 100644 index 392bf883cf..0000000000 Binary files a/sdk/python/examples/controls/date_range_picker/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/dismissible/__init__.py b/sdk/python/examples/controls/dismissible/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/dismissible/dismissible_list_tiles.py b/sdk/python/examples/controls/dismissible/dismissible_list_tiles.py index 585c402d8c..66c14fa000 100644 --- a/sdk/python/examples/controls/dismissible/dismissible_list_tiles.py +++ b/sdk/python/examples/controls/dismissible/dismissible_list_tiles.py @@ -56,4 +56,5 @@ def handle_update(e: ft.DismissibleUpdateEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dismissible/media/dismissible_list_tiles.gif b/sdk/python/examples/controls/dismissible/media/dismissible_list_tiles.gif deleted file mode 100644 index bce1e45322..0000000000 Binary files a/sdk/python/examples/controls/dismissible/media/dismissible_list_tiles.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dismissible/remove_on_dismiss_declarative.py b/sdk/python/examples/controls/dismissible/remove_on_dismiss_declarative.py index 812124f30e..abc4b4e173 100644 --- a/sdk/python/examples/controls/dismissible/remove_on_dismiss_declarative.py +++ b/sdk/python/examples/controls/dismissible/remove_on_dismiss_declarative.py @@ -26,4 +26,5 @@ def App(): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/divider/__init__.py b/sdk/python/examples/controls/divider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/divider/basic.py b/sdk/python/examples/controls/divider/basic.py index e910379cad..127fd6c30d 100644 --- a/sdk/python/examples/controls/divider/basic.py +++ b/sdk/python/examples/controls/divider/basic.py @@ -35,4 +35,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/divider/media/basic.png b/sdk/python/examples/controls/divider/media/basic.png deleted file mode 100644 index c97e78cd69..0000000000 Binary files a/sdk/python/examples/controls/divider/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/drag_target_and_draggable/__init__.py b/sdk/python/examples/controls/drag_target_and_draggable/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers.py b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers.py index 677d2c21de..53e52917bb 100644 --- a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers.py +++ b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers.py @@ -76,4 +76,5 @@ def handle_drag_leave(e: ft.DragTargetLeaveEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers_declarative.py b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers_declarative.py index 621c898ebc..2d2b8822f6 100644 --- a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers_declarative.py +++ b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_containers_declarative.py @@ -86,4 +86,5 @@ def on_leave(e: ft.DragTargetLeaveEvent): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_ordering_declarative.py b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_ordering_declarative.py index 04a1b4cf30..816a92a3d1 100644 --- a/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_ordering_declarative.py +++ b/sdk/python/examples/controls/drag_target_and_draggable/drag_and_drop_ordering_declarative.py @@ -250,4 +250,5 @@ def on_mounted(): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/drag_target_and_draggable/media/drag_and_drop_containers.gif b/sdk/python/examples/controls/drag_target_and_draggable/media/drag_and_drop_containers.gif deleted file mode 100644 index 96f639e448..0000000000 Binary files a/sdk/python/examples/controls/drag_target_and_draggable/media/drag_and_drop_containers.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown/__init__.py b/sdk/python/examples/controls/dropdown/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/dropdown/color_selection_with_filtering.py b/sdk/python/examples/controls/dropdown/color_selection_with_filtering.py index 2237b662f9..d7b86ac8c2 100644 --- a/sdk/python/examples/controls/dropdown/color_selection_with_filtering.py +++ b/sdk/python/examples/controls/dropdown/color_selection_with_filtering.py @@ -34,4 +34,5 @@ def handle_dropdown_select(e: ft.Event[ft.Dropdown]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown/declarative.py b/sdk/python/examples/controls/dropdown/declarative.py index 74c427414b..08ffaca8ab 100644 --- a/sdk/python/examples/controls/dropdown/declarative.py +++ b/sdk/python/examples/controls/dropdown/declarative.py @@ -47,4 +47,5 @@ def App(): ) -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/dropdown/icon_selection.py b/sdk/python/examples/controls/dropdown/icon_selection.py index 5b9ff25abf..2f6a88c855 100644 --- a/sdk/python/examples/controls/dropdown/icon_selection.py +++ b/sdk/python/examples/controls/dropdown/icon_selection.py @@ -26,4 +26,5 @@ def get_options(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown/media/color_selection_with_filtering.gif b/sdk/python/examples/controls/dropdown/media/color_selection_with_filtering.gif deleted file mode 100644 index b02f196890..0000000000 Binary files a/sdk/python/examples/controls/dropdown/media/color_selection_with_filtering.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown/media/icon_selection.png b/sdk/python/examples/controls/dropdown/media/icon_selection.png deleted file mode 100644 index 55e01a0509..0000000000 Binary files a/sdk/python/examples/controls/dropdown/media/icon_selection.png and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown/select_and_change_events.py b/sdk/python/examples/controls/dropdown/select_and_change_events.py index f3591aced4..fa53918e08 100644 --- a/sdk/python/examples/controls/dropdown/select_and_change_events.py +++ b/sdk/python/examples/controls/dropdown/select_and_change_events.py @@ -47,4 +47,5 @@ def dropdown_text_change(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown/styled.py b/sdk/python/examples/controls/dropdown/styled.py index 14f354fa52..585ad0b58f 100644 --- a/sdk/python/examples/controls/dropdown/styled.py +++ b/sdk/python/examples/controls/dropdown/styled.py @@ -123,4 +123,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/__init__.py b/sdk/python/examples/controls/dropdown_m2/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/dropdown_m2/add_and_delete_options.py b/sdk/python/examples/controls/dropdown_m2/add_and_delete_options.py index 44781cd8ab..af6453edcf 100644 --- a/sdk/python/examples/controls/dropdown_m2/add_and_delete_options.py +++ b/sdk/python/examples/controls/dropdown_m2/add_and_delete_options.py @@ -37,4 +37,5 @@ def handle_deletion(e: ft.Event[ft.OutlinedButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/basic.py b/sdk/python/examples/controls/dropdown_m2/basic.py index 02b94a10fc..4b7f0d4eca 100644 --- a/sdk/python/examples/controls/dropdown_m2/basic.py +++ b/sdk/python/examples/controls/dropdown_m2/basic.py @@ -23,4 +23,5 @@ def handle_button_click(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/dropdown_random_icon.py b/sdk/python/examples/controls/dropdown_m2/dropdown_random_icon.py index 02c491b982..9df16397cf 100644 --- a/sdk/python/examples/controls/dropdown_m2/dropdown_random_icon.py +++ b/sdk/python/examples/controls/dropdown_m2/dropdown_random_icon.py @@ -29,4 +29,5 @@ def handle_items_shuffle(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/handling_events.py b/sdk/python/examples/controls/dropdown_m2/handling_events.py index ce8558af81..f6631b2d9e 100644 --- a/sdk/python/examples/controls/dropdown_m2/handling_events.py +++ b/sdk/python/examples/controls/dropdown_m2/handling_events.py @@ -21,4 +21,5 @@ def dropdown_changed(e: ft.Event[ft.DropdownM2]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/label_and_hint.py b/sdk/python/examples/controls/dropdown_m2/label_and_hint.py index 6c75247f00..6e1a3c57c4 100644 --- a/sdk/python/examples/controls/dropdown_m2/label_and_hint.py +++ b/sdk/python/examples/controls/dropdown_m2/label_and_hint.py @@ -17,4 +17,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/dropdown_m2/media/add_and_delete_options.gif b/sdk/python/examples/controls/dropdown_m2/media/add_and_delete_options.gif deleted file mode 100644 index 68bd10253d..0000000000 Binary files a/sdk/python/examples/controls/dropdown_m2/media/add_and_delete_options.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown_m2/media/basic.gif b/sdk/python/examples/controls/dropdown_m2/media/basic.gif deleted file mode 100644 index 1202c3ff78..0000000000 Binary files a/sdk/python/examples/controls/dropdown_m2/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown_m2/media/handling_events.gif b/sdk/python/examples/controls/dropdown_m2/media/handling_events.gif deleted file mode 100644 index 15c3523f7a..0000000000 Binary files a/sdk/python/examples/controls/dropdown_m2/media/handling_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown_m2/media/label_and_hint.gif b/sdk/python/examples/controls/dropdown_m2/media/label_and_hint.gif deleted file mode 100644 index 425ddd0033..0000000000 Binary files a/sdk/python/examples/controls/dropdown_m2/media/label_and_hint.gif and /dev/null differ diff --git a/sdk/python/examples/controls/dropdown_m2/media/search.gif b/sdk/python/examples/controls/dropdown_m2/media/search.gif deleted file mode 100644 index f8c162fdfd..0000000000 Binary files a/sdk/python/examples/controls/dropdown_m2/media/search.gif and /dev/null differ diff --git a/sdk/python/examples/controls/expansion_panel_list/__init__.py b/sdk/python/examples/controls/expansion_panel_list/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/expansion_panel_list/basic.py b/sdk/python/examples/controls/expansion_panel_list/basic.py index 60e9da6b4d..22b2bbe217 100644 --- a/sdk/python/examples/controls/expansion_panel_list/basic.py +++ b/sdk/python/examples/controls/expansion_panel_list/basic.py @@ -56,4 +56,5 @@ def handle_delete(e: ft.Event[ft.IconButton]): page.add(panel_list) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/expansion_panel_list/media/basic.gif b/sdk/python/examples/controls/expansion_panel_list/media/basic.gif deleted file mode 100644 index dbdfa0c29a..0000000000 Binary files a/sdk/python/examples/controls/expansion_panel_list/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/file_picker/__init__.py b/sdk/python/examples/controls/file_picker/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/file_picker/media/pick_and_upload.png b/sdk/python/examples/controls/file_picker/media/pick_and_upload.png deleted file mode 100644 index 97ee09aa86..0000000000 Binary files a/sdk/python/examples/controls/file_picker/media/pick_and_upload.png and /dev/null differ diff --git a/sdk/python/examples/controls/file_picker/media/pick_save_and_get_directory_path.png b/sdk/python/examples/controls/file_picker/media/pick_save_and_get_directory_path.png deleted file mode 100644 index db9661a752..0000000000 Binary files a/sdk/python/examples/controls/file_picker/media/pick_save_and_get_directory_path.png and /dev/null differ diff --git a/sdk/python/examples/controls/file_picker/pick_and_upload.py b/sdk/python/examples/controls/file_picker/pick_and_upload.py index a90ca6df2d..0bebc39fad 100644 --- a/sdk/python/examples/controls/file_picker/pick_and_upload.py +++ b/sdk/python/examples/controls/file_picker/pick_and_upload.py @@ -1,10 +1,17 @@ -# -# Example of picking and uploading files with progress indication -# -# Run this example with: -# export FLET_SECRET_KEY= -# uv run flet run --web examples/controls/file_picker/pick_and_upload.py -# +"""Pick and upload files with progress (Flet Web only). + +Requires the FLET_SECRET_KEY environment variable to upload files. + +Set the environment variable: +- macOS / Linux: + export FLET_SECRET_KEY= +- Windows (Command Prompt / PowerShell): + setx FLET_SECRET_KEY + +Run in Web mode: + flet run --web pick_and_upload.py +""" + from dataclasses import dataclass, field import flet as ft @@ -27,8 +34,7 @@ def main(page: ft.Page): "\n" "Run this example with:\n" " export FLET_SECRET_KEY=\n" - " flet run --web " - "examples/controls/file_picker/pick_and_upload.py", + " flet run --web pick_and_upload.py", color=ft.Colors.RED, selectable=True, ) @@ -83,4 +89,5 @@ async def handle_file_upload(e: ft.Event[ft.Button]): ) -ft.run(main, upload_dir="examples") +if __name__ == "__main__": + ft.run(main, upload_dir="examples") diff --git a/sdk/python/examples/controls/file_picker/pick_save_and_get_directory_path.py b/sdk/python/examples/controls/file_picker/pick_save_and_get_directory_path.py index f9677e67cd..c448a71f98 100644 --- a/sdk/python/examples/controls/file_picker/pick_save_and_get_directory_path.py +++ b/sdk/python/examples/controls/file_picker/pick_save_and_get_directory_path.py @@ -50,4 +50,5 @@ async def handle_get_directory_path(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/filled_button/__init__.py b/sdk/python/examples/controls/filled_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/filled_button/basic.py b/sdk/python/examples/controls/filled_button/basic.py index 0f3db59374..38713856cc 100644 --- a/sdk/python/examples/controls/filled_button/basic.py +++ b/sdk/python/examples/controls/filled_button/basic.py @@ -11,4 +11,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/filled_button/media/adaptive.png b/sdk/python/examples/controls/filled_button/media/adaptive.png deleted file mode 100644 index a1fa0966bd..0000000000 Binary files a/sdk/python/examples/controls/filled_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/filled_button/media/basic.png b/sdk/python/examples/controls/filled_button/media/basic.png deleted file mode 100644 index a65ee79d9b..0000000000 Binary files a/sdk/python/examples/controls/filled_button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/filled_button/media/index.png b/sdk/python/examples/controls/filled_button/media/index.png deleted file mode 100644 index d1b2fabd62..0000000000 Binary files a/sdk/python/examples/controls/filled_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/filled_tonal_button/__init__.py b/sdk/python/examples/controls/filled_tonal_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/filled_tonal_button/basic.py b/sdk/python/examples/controls/filled_tonal_button/basic.py index 28335a7927..d241d29254 100644 --- a/sdk/python/examples/controls/filled_tonal_button/basic.py +++ b/sdk/python/examples/controls/filled_tonal_button/basic.py @@ -11,4 +11,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/filled_tonal_button/media/adaptive.png b/sdk/python/examples/controls/filled_tonal_button/media/adaptive.png deleted file mode 100644 index 64eed7527c..0000000000 Binary files a/sdk/python/examples/controls/filled_tonal_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/filled_tonal_button/media/basic.png b/sdk/python/examples/controls/filled_tonal_button/media/basic.png deleted file mode 100644 index f08773f020..0000000000 Binary files a/sdk/python/examples/controls/filled_tonal_button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/filled_tonal_button/media/index.png b/sdk/python/examples/controls/filled_tonal_button/media/index.png deleted file mode 100644 index e8c9c4288a..0000000000 Binary files a/sdk/python/examples/controls/filled_tonal_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/flashlight/__init__.py b/sdk/python/examples/controls/flashlight/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/flashlight/example_1.py b/sdk/python/examples/controls/flashlight/example_1.py index 2f1e7f3c16..7104f7eb9d 100644 --- a/sdk/python/examples/controls/flashlight/example_1.py +++ b/sdk/python/examples/controls/flashlight/example_1.py @@ -1,6 +1,5 @@ -import flet_flashlight as ffl - import flet as ft +import flet_flashlight as ffl def main(page: ft.Page): @@ -11,4 +10,5 @@ async def toggle_flashlight(): page.add(ft.TextButton("toggle", on_click=toggle_flashlight)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/floating_action_button/__init__.py b/sdk/python/examples/controls/floating_action_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/floating_action_button/handling_clicks.py b/sdk/python/examples/controls/floating_action_button/handling_clicks.py index d60358f08f..9b32001c0f 100644 --- a/sdk/python/examples/controls/floating_action_button/handling_clicks.py +++ b/sdk/python/examples/controls/floating_action_button/handling_clicks.py @@ -50,4 +50,5 @@ def handle_fab_click(e: ft.Event[ft.FloatingActionButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/floating_action_button/media/handling_clicks.gif b/sdk/python/examples/controls/floating_action_button/media/handling_clicks.gif deleted file mode 100644 index 430c8eef90..0000000000 Binary files a/sdk/python/examples/controls/floating_action_button/media/handling_clicks.gif and /dev/null differ diff --git a/sdk/python/examples/controls/floating_action_button/media/index.png b/sdk/python/examples/controls/floating_action_button/media/index.png deleted file mode 100644 index 6b0b6d9a20..0000000000 Binary files a/sdk/python/examples/controls/floating_action_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/form_controls_misc.py b/sdk/python/examples/controls/form_controls_misc.py index 823489a97f..40cd5253d0 100644 --- a/sdk/python/examples/controls/form_controls_misc.py +++ b/sdk/python/examples/controls/form_controls_misc.py @@ -132,4 +132,5 @@ def handle_rg2_change(e: ft.Event[ft.RadioGroup]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/geolocator/__init__.py b/sdk/python/examples/controls/geolocator/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/geolocator/example_1.py b/sdk/python/examples/controls/geolocator/example_1.py index 2331d360d2..7abf6b6c5d 100644 --- a/sdk/python/examples/controls/geolocator/example_1.py +++ b/sdk/python/examples/controls/geolocator/example_1.py @@ -1,8 +1,7 @@ from typing import Callable -import flet_geolocator as ftg - import flet as ft +import flet_geolocator as ftg async def main(page: ft.Page): @@ -28,7 +27,7 @@ def show_snackbar(message): page.show_dialog(ft.SnackBar(ft.Text(message))) async def handle_permission_request(e: ft.Event[ft.OutlinedButton]): - p = await geo.request_permission(timeout=60) + p = await geo.request_permission() page.add(ft.Text(f"request_permission: {p}")) show_snackbar(f"Permission request sent: {p}") @@ -51,7 +50,7 @@ async def handle_location_service_enabled(e): async def handle_open_location_settings(e: ft.Event[ft.OutlinedButton]): p = await geo.open_location_settings() page.pop_dialog() - if p is True: + if p: show_snackbar("Location settings opened successfully.") else: show_snackbar("Location settings could not be opened.") @@ -93,7 +92,7 @@ async def handle_open_app_settings(e: ft.Event[ft.OutlinedButton]): ), ft.OutlinedButton( content="Get Last Known Position", - visible=not page.web, + disabled=page.web, on_click=handle_get_last_known_position, ), ft.OutlinedButton( @@ -102,12 +101,12 @@ async def handle_open_app_settings(e: ft.Event[ft.OutlinedButton]): ), ft.OutlinedButton( content="Open Location Settings", - visible=not page.web, # (1)! + disabled=page.web, # (1)! on_click=lambda e: page.show_dialog(location_settings_dlg), ), ft.OutlinedButton( content="Open App Settings", - visible=not page.web, # (1)! + disabled=page.web, # (1)! on_click=lambda e: page.show_dialog(app_settings_dlg), ), ], @@ -115,4 +114,5 @@ async def handle_open_app_settings(e: ft.Event[ft.OutlinedButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/gesture_detector/__init__.py b/sdk/python/examples/controls/gesture_detector/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/gesture_detector/draggable_containers.py b/sdk/python/examples/controls/gesture_detector/draggable_containers.py index 7b11d7d52d..4e93413a17 100644 --- a/sdk/python/examples/controls/gesture_detector/draggable_containers.py +++ b/sdk/python/examples/controls/gesture_detector/draggable_containers.py @@ -43,4 +43,5 @@ def handle_pan_update2(e: ft.DragUpdateEvent[ft.GestureDetector]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/gesture_detector/handling_events.py b/sdk/python/examples/controls/gesture_detector/handling_events.py index e35643cca7..8c3e9cf819 100644 --- a/sdk/python/examples/controls/gesture_detector/handling_events.py +++ b/sdk/python/examples/controls/gesture_detector/handling_events.py @@ -28,4 +28,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/gesture_detector/media/draggable_containers.gif b/sdk/python/examples/controls/gesture_detector/media/draggable_containers.gif deleted file mode 100644 index 88ae3784dd..0000000000 Binary files a/sdk/python/examples/controls/gesture_detector/media/draggable_containers.gif and /dev/null differ diff --git a/sdk/python/examples/controls/gesture_detector/mouse_cursors.py b/sdk/python/examples/controls/gesture_detector/mouse_cursors.py index 3fc1c567af..a237982db1 100644 --- a/sdk/python/examples/controls/gesture_detector/mouse_cursors.py +++ b/sdk/python/examples/controls/gesture_detector/mouse_cursors.py @@ -35,4 +35,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/gesture_detector/window_drag_area.py b/sdk/python/examples/controls/gesture_detector/window_drag_area.py index b93b627f15..73dc58f981 100644 --- a/sdk/python/examples/controls/gesture_detector/window_drag_area.py +++ b/sdk/python/examples/controls/gesture_detector/window_drag_area.py @@ -24,4 +24,5 @@ def on_pan_update(e: ft.DragUpdateEvent[ft.GestureDetector]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/grid_view/__init__.py b/sdk/python/examples/controls/grid_view/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/grid_view/media/photo_gallery.png b/sdk/python/examples/controls/grid_view/media/photo_gallery.png deleted file mode 100644 index 723434a026..0000000000 Binary files a/sdk/python/examples/controls/grid_view/media/photo_gallery.png and /dev/null differ diff --git a/sdk/python/examples/controls/grid_view/photo_gallery.py b/sdk/python/examples/controls/grid_view/photo_gallery.py index bbeb1dae1f..af69881147 100644 --- a/sdk/python/examples/controls/grid_view/photo_gallery.py +++ b/sdk/python/examples/controls/grid_view/photo_gallery.py @@ -27,4 +27,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/haptic_feedback/__init__.py b/sdk/python/examples/controls/haptic_feedback/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/haptic_feedback/basic.py b/sdk/python/examples/controls/haptic_feedback/basic.py index 158586aac9..9413ea4d43 100644 --- a/sdk/python/examples/controls/haptic_feedback/basic.py +++ b/sdk/python/examples/controls/haptic_feedback/basic.py @@ -24,4 +24,5 @@ async def vibrate(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/hero/__init__.py b/sdk/python/examples/controls/hero/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/icon/__init__.py b/sdk/python/examples/controls/icon/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/icon/media/basic.png b/sdk/python/examples/controls/icon/media/basic.png deleted file mode 100644 index 7b7cb64aac..0000000000 Binary files a/sdk/python/examples/controls/icon/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/icon_button/__init__.py b/sdk/python/examples/controls/icon_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/icon_button/handling_clicks.py b/sdk/python/examples/controls/icon_button/handling_clicks.py index b306db4706..32974221a0 100644 --- a/sdk/python/examples/controls/icon_button/handling_clicks.py +++ b/sdk/python/examples/controls/icon_button/handling_clicks.py @@ -19,4 +19,5 @@ def button_clicked(e: ft.Event[ft.IconButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/icon_button/media/adaptive.png b/sdk/python/examples/controls/icon_button/media/adaptive.png deleted file mode 100644 index 286fb71b23..0000000000 Binary files a/sdk/python/examples/controls/icon_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/icon_button/media/handling_clicks.gif b/sdk/python/examples/controls/icon_button/media/handling_clicks.gif deleted file mode 100644 index 8acd3e5bd7..0000000000 Binary files a/sdk/python/examples/controls/icon_button/media/handling_clicks.gif and /dev/null differ diff --git a/sdk/python/examples/controls/icon_button/media/index.png b/sdk/python/examples/controls/icon_button/media/index.png deleted file mode 100644 index 45079c2243..0000000000 Binary files a/sdk/python/examples/controls/icon_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/icon_button/selected_icon.py b/sdk/python/examples/controls/icon_button/selected_icon.py index 8a0a7b2c5c..eb05c71049 100644 --- a/sdk/python/examples/controls/icon_button/selected_icon.py +++ b/sdk/python/examples/controls/icon_button/selected_icon.py @@ -28,4 +28,5 @@ def handle_click(e: ft.Event[ft.IconButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/icon_button/variants.py b/sdk/python/examples/controls/icon_button/variants.py index 754208aa16..b021432276 100644 --- a/sdk/python/examples/controls/icon_button/variants.py +++ b/sdk/python/examples/controls/icon_button/variants.py @@ -101,4 +101,5 @@ def toggle_icon_button(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image/__init__.py b/sdk/python/examples/controls/image/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/image/assets/__init__.py b/sdk/python/examples/controls/image/assets/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/image/dynamic_svg.py b/sdk/python/examples/controls/image/dynamic_svg.py index 7ebccb4ba2..116291a588 100644 --- a/sdk/python/examples/controls/image/dynamic_svg.py +++ b/sdk/python/examples/controls/image/dynamic_svg.py @@ -22,4 +22,5 @@ async def main(page: ft.Page): await asyncio.sleep(0.1) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image/gallery.py b/sdk/python/examples/controls/image/gallery.py index fb6d6bc2ce..233c256723 100644 --- a/sdk/python/examples/controls/image/gallery.py +++ b/sdk/python/examples/controls/image/gallery.py @@ -30,4 +30,5 @@ def main(page: ft.Page): page.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image/lucide_icons.py b/sdk/python/examples/controls/image/lucide_icons.py index 0301648aa6..c1f531edb1 100644 --- a/sdk/python/examples/controls/image/lucide_icons.py +++ b/sdk/python/examples/controls/image/lucide_icons.py @@ -19,4 +19,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image/media/gallery.gif b/sdk/python/examples/controls/image/media/gallery.gif deleted file mode 100644 index 60aa24c0c9..0000000000 Binary files a/sdk/python/examples/controls/image/media/gallery.gif and /dev/null differ diff --git a/sdk/python/examples/controls/image/src_base64_and_bytes.py b/sdk/python/examples/controls/image/src_base64_and_bytes.py index 8d3895505b..3f6d394170 100644 --- a/sdk/python/examples/controls/image/src_base64_and_bytes.py +++ b/sdk/python/examples/controls/image/src_base64_and_bytes.py @@ -23,4 +23,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image/static_svg.py b/sdk/python/examples/controls/image/static_svg.py index fd2e3b5ae1..d141476cc6 100644 --- a/sdk/python/examples/controls/image/static_svg.py +++ b/sdk/python/examples/controls/image/static_svg.py @@ -55,4 +55,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/image_slideshow.py b/sdk/python/examples/controls/image_slideshow.py index 5f14ae33f3..cb541811f1 100644 --- a/sdk/python/examples/controls/image_slideshow.py +++ b/sdk/python/examples/controls/image_slideshow.py @@ -34,4 +34,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/interactive_viewer/__init__.py b/sdk/python/examples/controls/interactive_viewer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/interactive_viewer/handling_events.py b/sdk/python/examples/controls/interactive_viewer/handling_events.py index 0aa1c3b8fe..facbe895bb 100644 --- a/sdk/python/examples/controls/interactive_viewer/handling_events.py +++ b/sdk/python/examples/controls/interactive_viewer/handling_events.py @@ -17,4 +17,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/interactive_viewer/transformations.py b/sdk/python/examples/controls/interactive_viewer/transformations.py index 4ffb2d71fc..61a6ef4b4a 100644 --- a/sdk/python/examples/controls/interactive_viewer/transformations.py +++ b/sdk/python/examples/controls/interactive_viewer/transformations.py @@ -31,7 +31,7 @@ async def handle_restore_state(e: ft.Event[ft.Button]): min_scale=0.1, max_scale=5, boundary_margin=ft.Margin.all(20), - content=ft.Image(src="https://picsum.photos/500/500"), + content=ft.Image(src="https://picsum.photos/300/300"), ), ft.Row( wrap=True, @@ -48,4 +48,5 @@ async def handle_restore_state(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/keyboard_listener/__init__.py b/sdk/python/examples/controls/keyboard_listener/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/keyboard_listener/detect_keys.py b/sdk/python/examples/controls/keyboard_listener/detect_keys.py index 1a2655b151..de86bcb62d 100644 --- a/sdk/python/examples/controls/keyboard_listener/detect_keys.py +++ b/sdk/python/examples/controls/keyboard_listener/detect_keys.py @@ -23,4 +23,5 @@ def key_up(e: ft.KeyUpEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/__init__.py b/sdk/python/examples/controls/layout_control/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/layout_control/animate_align.py b/sdk/python/examples/controls/layout_control/animate_align.py index 36cb8d9fa5..95a4b0d699 100644 --- a/sdk/python/examples/controls/layout_control/animate_align.py +++ b/sdk/python/examples/controls/layout_control/animate_align.py @@ -23,4 +23,5 @@ def animate_click(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animate_margin.py b/sdk/python/examples/controls/layout_control/animate_margin.py index 28d1e34f71..ddbc6e1686 100644 --- a/sdk/python/examples/controls/layout_control/animate_margin.py +++ b/sdk/python/examples/controls/layout_control/animate_margin.py @@ -25,4 +25,5 @@ def animate_click(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animate_opacity.py b/sdk/python/examples/controls/layout_control/animate_opacity.py index 9f1f6492f9..2d6ca52564 100644 --- a/sdk/python/examples/controls/layout_control/animate_opacity.py +++ b/sdk/python/examples/controls/layout_control/animate_opacity.py @@ -21,4 +21,5 @@ def animate_opacity(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animate_position.py b/sdk/python/examples/controls/layout_control/animate_position.py index 3cdfee2cca..4ceb72d356 100644 --- a/sdk/python/examples/controls/layout_control/animate_position.py +++ b/sdk/python/examples/controls/layout_control/animate_position.py @@ -40,4 +40,5 @@ def animate_container(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animate_rotation.py b/sdk/python/examples/controls/layout_control/animate_rotation.py index ef7921cb04..9b70ae4238 100644 --- a/sdk/python/examples/controls/layout_control/animate_rotation.py +++ b/sdk/python/examples/controls/layout_control/animate_rotation.py @@ -27,4 +27,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animate_scale.py b/sdk/python/examples/controls/layout_control/animate_scale.py index 828c69ee8b..76c709a92f 100644 --- a/sdk/python/examples/controls/layout_control/animate_scale.py +++ b/sdk/python/examples/controls/layout_control/animate_scale.py @@ -26,4 +26,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/animated_offset.py b/sdk/python/examples/controls/layout_control/animated_offset.py index dd137a5c23..df88914a33 100644 --- a/sdk/python/examples/controls/layout_control/animated_offset.py +++ b/sdk/python/examples/controls/layout_control/animated_offset.py @@ -19,4 +19,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/layout_control/media/animate_offset.gif b/sdk/python/examples/controls/layout_control/media/animate_offset.gif deleted file mode 100644 index f3e4262ff0..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animate_offset.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/media/animate_opacity.gif b/sdk/python/examples/controls/layout_control/media/animate_opacity.gif deleted file mode 100644 index 8bc32fa324..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animate_opacity.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/media/animate_position.gif b/sdk/python/examples/controls/layout_control/media/animate_position.gif deleted file mode 100644 index 7ebe705ebc..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animate_position.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/media/animate_rotation.gif b/sdk/python/examples/controls/layout_control/media/animate_rotation.gif deleted file mode 100644 index 1290682bb1..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animate_rotation.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/media/animate_scale.gif b/sdk/python/examples/controls/layout_control/media/animate_scale.gif deleted file mode 100644 index 58dce9b043..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animate_scale.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/media/animated_switcher.gif b/sdk/python/examples/controls/layout_control/media/animated_switcher.gif deleted file mode 100644 index f9429bebdb..0000000000 Binary files a/sdk/python/examples/controls/layout_control/media/animated_switcher.gif and /dev/null differ diff --git a/sdk/python/examples/controls/layout_control/switcher.py b/sdk/python/examples/controls/layout_control/switcher.py index 4795c29be2..69514c6466 100644 --- a/sdk/python/examples/controls/layout_control/switcher.py +++ b/sdk/python/examples/controls/layout_control/switcher.py @@ -36,4 +36,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/list_tile/__init__.py b/sdk/python/examples/controls/list_tile/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/list_tile/basic.py b/sdk/python/examples/controls/list_tile/basic.py index 723ed41c39..667fbfb32a 100644 --- a/sdk/python/examples/controls/list_tile/basic.py +++ b/sdk/python/examples/controls/list_tile/basic.py @@ -73,4 +73,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/list_tile/media/basic.png b/sdk/python/examples/controls/list_tile/media/basic.png deleted file mode 100644 index 7a0e29c16c..0000000000 Binary files a/sdk/python/examples/controls/list_tile/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/list_tile/media/index.png b/sdk/python/examples/controls/list_tile/media/index.png deleted file mode 100644 index fc3bdeb8ba..0000000000 Binary files a/sdk/python/examples/controls/list_tile/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/list_view/__init__.py b/sdk/python/examples/controls/list_view/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/list_view/autoscroll_and_dynamic_items.py b/sdk/python/examples/controls/list_view/autoscroll_and_dynamic_items.py index dc7dabb5ce..e2e104ab0e 100644 --- a/sdk/python/examples/controls/list_view/autoscroll_and_dynamic_items.py +++ b/sdk/python/examples/controls/list_view/autoscroll_and_dynamic_items.py @@ -45,4 +45,5 @@ def handle_switch_change(e: ft.Event[ft.Switch]): page.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/list_view/media/autoscroll_and_dynamic_items.gif b/sdk/python/examples/controls/list_view/media/autoscroll_and_dynamic_items.gif deleted file mode 100644 index 6887014ec9..0000000000 Binary files a/sdk/python/examples/controls/list_view/media/autoscroll_and_dynamic_items.gif and /dev/null differ diff --git a/sdk/python/examples/controls/lottie/assets/__init__.py b/sdk/python/examples/controls/lottie/assets/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/lottie/example_1.py b/sdk/python/examples/controls/lottie/basic.py similarity index 94% rename from sdk/python/examples/controls/lottie/example_1.py rename to sdk/python/examples/controls/lottie/basic.py index 2479cce046..a71af8dfcc 100644 --- a/sdk/python/examples/controls/lottie/example_1.py +++ b/sdk/python/examples/controls/lottie/basic.py @@ -1,6 +1,5 @@ -import flet_lottie as ftl - import flet as ft +import flet_lottie as ftl def main(page: ft.Page): @@ -24,4 +23,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/map/__init__.py b/sdk/python/examples/controls/map/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/map/example_1.py b/sdk/python/examples/controls/map/example_1.py index 450e37ceae..22de9a9ef7 100644 --- a/sdk/python/examples/controls/map/example_1.py +++ b/sdk/python/examples/controls/map/example_1.py @@ -1,8 +1,7 @@ import random -import flet_map as ftm - import flet as ft +import flet_map as ftm def main(page: ft.Page): @@ -46,7 +45,7 @@ def handle_tap(e: ftm.MapTapEvent): on_event=print, layers=[ ftm.TileLayer( - url_template="https://tile.openstreetmap.org/{z}/{x}/{y}.png", + url_template="https://tile.memomaps.de/tilegen/{z}/{x}/{y}.png", on_image_error=lambda e: print("TileLayer Error"), ), ftm.RichAttribution( @@ -135,4 +134,5 @@ def handle_tap(e: ftm.MapTapEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/markdown/__init__.py b/sdk/python/examples/controls/markdown/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/markdown/basic.py b/sdk/python/examples/controls/markdown/basic.py index 10a123a572..62bca93752 100644 --- a/sdk/python/examples/controls/markdown/basic.py +++ b/sdk/python/examples/controls/markdown/basic.py @@ -92,4 +92,5 @@ async def handle_link_tap(e: ft.Event[ft.Markdown]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/markdown/code_syntax_highlight.py b/sdk/python/examples/controls/markdown/code_syntax_highlight.py index b392711027..1ffec38bd2 100644 --- a/sdk/python/examples/controls/markdown/code_syntax_highlight.py +++ b/sdk/python/examples/controls/markdown/code_syntax_highlight.py @@ -175,4 +175,5 @@ async def navigate_md_link(e: ft.Event[ft.Markdown]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/markdown/custom_text_theme.py b/sdk/python/examples/controls/markdown/custom_text_theme.py index 51749a9e31..d75b8e7374 100644 --- a/sdk/python/examples/controls/markdown/custom_text_theme.py +++ b/sdk/python/examples/controls/markdown/custom_text_theme.py @@ -41,4 +41,5 @@ def change_theme_mode(e: ft.Event[ft.Switch]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/markdown/listviews.py b/sdk/python/examples/controls/markdown/listviews.py index 9faf353dd6..19d2d16113 100644 --- a/sdk/python/examples/controls/markdown/listviews.py +++ b/sdk/python/examples/controls/markdown/listviews.py @@ -148,4 +148,5 @@ async def navigate_md_link(e: ft.Event[ft.Markdown]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/markdown/media/basic.gif b/sdk/python/examples/controls/markdown/media/basic.gif deleted file mode 100644 index 9075ce62b5..0000000000 Binary files a/sdk/python/examples/controls/markdown/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/markdown/media/code_syntax_highlight.png b/sdk/python/examples/controls/markdown/media/code_syntax_highlight.png deleted file mode 100644 index f19bc1cfcf..0000000000 Binary files a/sdk/python/examples/controls/markdown/media/code_syntax_highlight.png and /dev/null differ diff --git a/sdk/python/examples/controls/menu_bar/__init__.py b/sdk/python/examples/controls/menu_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/menu_bar/media/nested_submenus.gif b/sdk/python/examples/controls/menu_bar/media/nested_submenus.gif deleted file mode 100644 index 5455898d19..0000000000 Binary files a/sdk/python/examples/controls/menu_bar/media/nested_submenus.gif and /dev/null differ diff --git a/sdk/python/examples/controls/menu_bar/nested_submenus.py b/sdk/python/examples/controls/menu_bar/nested_submenus.py index 94070dd5e7..c52c0ebc1b 100644 --- a/sdk/python/examples/controls/menu_bar/nested_submenus.py +++ b/sdk/python/examples/controls/menu_bar/nested_submenus.py @@ -119,4 +119,5 @@ def handle_submenu_hover(e: ft.Event[ft.SubmenuButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/menu_item_button/__init__.py b/sdk/python/examples/controls/menu_item_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/menu_item_button/basic.py b/sdk/python/examples/controls/menu_item_button/basic.py index dcb9839195..4b15491094 100644 --- a/sdk/python/examples/controls/menu_item_button/basic.py +++ b/sdk/python/examples/controls/menu_item_button/basic.py @@ -67,4 +67,5 @@ def handle_on_hover(e: ft.Event[ft.MenuItemButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/menu_item_button/media/basic.gif b/sdk/python/examples/controls/menu_item_button/media/basic.gif deleted file mode 100644 index 7ddd02561b..0000000000 Binary files a/sdk/python/examples/controls/menu_item_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/navigation_bar/__init__.py b/sdk/python/examples/controls/navigation_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/navigation_bar/basic.py b/sdk/python/examples/controls/navigation_bar/basic.py index 7d613ddc15..2e0b3c844e 100644 --- a/sdk/python/examples/controls/navigation_bar/basic.py +++ b/sdk/python/examples/controls/navigation_bar/basic.py @@ -19,4 +19,5 @@ def main(page: ft.Page): page.add(ft.Text("Body!")) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/navigation_bar/media/basic.gif b/sdk/python/examples/controls/navigation_bar/media/basic.gif deleted file mode 100644 index 3fef56305c..0000000000 Binary files a/sdk/python/examples/controls/navigation_bar/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/navigation_drawer/__init__.py b/sdk/python/examples/controls/navigation_drawer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/navigation_drawer/media/position_end.gif b/sdk/python/examples/controls/navigation_drawer/media/position_end.gif deleted file mode 100644 index f87d23cf92..0000000000 Binary files a/sdk/python/examples/controls/navigation_drawer/media/position_end.gif and /dev/null differ diff --git a/sdk/python/examples/controls/navigation_drawer/media/position_start.gif b/sdk/python/examples/controls/navigation_drawer/media/position_start.gif deleted file mode 100644 index c2db87fa91..0000000000 Binary files a/sdk/python/examples/controls/navigation_drawer/media/position_start.gif and /dev/null differ diff --git a/sdk/python/examples/controls/navigation_drawer/position_end.py b/sdk/python/examples/controls/navigation_drawer/position_end.py index 787c2f770d..85800af7f3 100644 --- a/sdk/python/examples/controls/navigation_drawer/position_end.py +++ b/sdk/python/examples/controls/navigation_drawer/position_end.py @@ -34,4 +34,5 @@ async def handle_change(e: ft.Event[ft.NavigationDrawer]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/navigation_drawer/position_start.py b/sdk/python/examples/controls/navigation_drawer/position_start.py index 855403b16a..4002748777 100644 --- a/sdk/python/examples/controls/navigation_drawer/position_start.py +++ b/sdk/python/examples/controls/navigation_drawer/position_start.py @@ -43,4 +43,5 @@ async def handle_change(e: ft.Event[ft.NavigationDrawer]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/navigation_rail/__init__.py b/sdk/python/examples/controls/navigation_rail/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/navigation_rail/basic.py b/sdk/python/examples/controls/navigation_rail/basic.py index 3322ef31ac..d43fee2ac8 100644 --- a/sdk/python/examples/controls/navigation_rail/basic.py +++ b/sdk/python/examples/controls/navigation_rail/basic.py @@ -49,4 +49,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/navigation_rail/media/basic.png b/sdk/python/examples/controls/navigation_rail/media/basic.png deleted file mode 100644 index b1bdd1877a..0000000000 Binary files a/sdk/python/examples/controls/navigation_rail/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/__init__.py b/sdk/python/examples/controls/outlined_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/outlined_button/basic.py b/sdk/python/examples/controls/outlined_button/basic.py index 9745033c33..2f9e2dcfd8 100644 --- a/sdk/python/examples/controls/outlined_button/basic.py +++ b/sdk/python/examples/controls/outlined_button/basic.py @@ -10,4 +10,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/outlined_button/custom_content.py b/sdk/python/examples/controls/outlined_button/custom_content.py index c00165153b..b56740234d 100644 --- a/sdk/python/examples/controls/outlined_button/custom_content.py +++ b/sdk/python/examples/controls/outlined_button/custom_content.py @@ -33,4 +33,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/outlined_button/handling_clicks.py b/sdk/python/examples/controls/outlined_button/handling_clicks.py index d838256a6b..2197cc8670 100644 --- a/sdk/python/examples/controls/outlined_button/handling_clicks.py +++ b/sdk/python/examples/controls/outlined_button/handling_clicks.py @@ -20,4 +20,5 @@ def handle_button_click(e: ft.Event[ft.OutlinedButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/outlined_button/icons.py b/sdk/python/examples/controls/outlined_button/icons.py index 5821d56af8..9f1d045ce7 100644 --- a/sdk/python/examples/controls/outlined_button/icons.py +++ b/sdk/python/examples/controls/outlined_button/icons.py @@ -14,4 +14,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/outlined_button/media/adaptive.png b/sdk/python/examples/controls/outlined_button/media/adaptive.png deleted file mode 100644 index 6770b5c2e9..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/media/basic.png b/sdk/python/examples/controls/outlined_button/media/basic.png deleted file mode 100644 index 50c75fe74a..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/media/custom_content.png b/sdk/python/examples/controls/outlined_button/media/custom_content.png deleted file mode 100644 index 4e2fbda4fd..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/custom_content.png and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/media/handling_clicks.gif b/sdk/python/examples/controls/outlined_button/media/handling_clicks.gif deleted file mode 100644 index 4ce673efa0..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/handling_clicks.gif and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/media/icons.png b/sdk/python/examples/controls/outlined_button/media/icons.png deleted file mode 100644 index b073f977e1..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/icons.png and /dev/null differ diff --git a/sdk/python/examples/controls/outlined_button/media/index.png b/sdk/python/examples/controls/outlined_button/media/index.png deleted file mode 100644 index dcede8642c..0000000000 Binary files a/sdk/python/examples/controls/outlined_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/page/__init__.py b/sdk/python/examples/controls/page/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/page/app_exit_confirm_dialog.py b/sdk/python/examples/controls/page/app_exit_confirm_dialog.py index 7511ba0095..a6914e1946 100644 --- a/sdk/python/examples/controls/page/app_exit_confirm_dialog.py +++ b/sdk/python/examples/controls/page/app_exit_confirm_dialog.py @@ -31,4 +31,5 @@ def handle_no_click(e: ft.Event[ft.OutlinedButton]): page.add(ft.Text('Try exiting this app by clicking window\'s "Close" button!')) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/page/keyboard_events.py b/sdk/python/examples/controls/page/keyboard_events.py index 91b931ad39..cf5e082309 100644 --- a/sdk/python/examples/controls/page/keyboard_events.py +++ b/sdk/python/examples/controls/page/keyboard_events.py @@ -45,4 +45,5 @@ def on_keyboard(e: ft.KeyboardEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/page/set_platform.py b/sdk/python/examples/controls/page/set_platform.py index 076ab89fff..c3c2b3c41b 100644 --- a/sdk/python/examples/controls/page/set_platform.py +++ b/sdk/python/examples/controls/page/set_platform.py @@ -21,4 +21,5 @@ def set_ios(e: ft.Event[ft.Button]): print("Default platform:", page.platform) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/page/splash_test.py b/sdk/python/examples/controls/page/splash_test.py index 7f09dbc93c..38e128bd8c 100644 --- a/sdk/python/examples/controls/page/splash_test.py +++ b/sdk/python/examples/controls/page/splash_test.py @@ -20,4 +20,5 @@ async def handle_button_click(e: ft.Event[ft.Button]): page.add(btn) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/page/window_hidden_on_start.py b/sdk/python/examples/controls/page/window_hidden_on_start.py index 0ce72c4198..3a6d9cdc3a 100644 --- a/sdk/python/examples/controls/page/window_hidden_on_start.py +++ b/sdk/python/examples/controls/page/window_hidden_on_start.py @@ -16,4 +16,5 @@ async def main(page: ft.Page): page.update() -ft.run(main, view=ft.AppView.FLET_APP_HIDDEN) +if __name__ == "__main__": + ft.run(main, view=ft.AppView.FLET_APP_HIDDEN) diff --git a/sdk/python/examples/controls/page/window_resize.py b/sdk/python/examples/controls/page/window_resize.py index d54f7ba3d2..43c9426a3f 100644 --- a/sdk/python/examples/controls/page/window_resize.py +++ b/sdk/python/examples/controls/page/window_resize.py @@ -16,4 +16,5 @@ def main(page: ft.Page): page.window.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/pagelet/basic.py b/sdk/python/examples/controls/pagelet/basic.py index 53784803cb..0401479e9e 100644 --- a/sdk/python/examples/controls/pagelet/basic.py +++ b/sdk/python/examples/controls/pagelet/basic.py @@ -1,5 +1,3 @@ -import asyncio - import flet as ft @@ -7,14 +5,6 @@ def main(page: ft.Page): page.horizontal_alignment = ft.MainAxisAlignment.CENTER page.vertical_alignment = ft.CrossAxisAlignment.CENTER - async def handle_show_drawer(e: ft.Event[ft.FloatingActionButton]): - await pagelet.show_drawer() - - async def handle_show_end_drawer(e: ft.Event[ft.Button]): - await pagelet.show_end_drawer() - await asyncio.sleep(3) - await pagelet.close_end_drawer() - page.add( pagelet := ft.Pagelet( width=500, diff --git a/sdk/python/examples/controls/pagelet/basic_declarative.py b/sdk/python/examples/controls/pagelet/basic_declarative.py index d144440c27..ccca24346c 100644 --- a/sdk/python/examples/controls/pagelet/basic_declarative.py +++ b/sdk/python/examples/controls/pagelet/basic_declarative.py @@ -72,4 +72,5 @@ async def handle_show_end_drawer(): return p -ft.run(lambda page: page.render(App)) +if __name__ == "__main__": + ft.run(lambda page: page.render(App)) diff --git a/sdk/python/examples/controls/permission_handler/__init__.py b/sdk/python/examples/controls/permission_handler/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/permission_handler/example_1.py b/sdk/python/examples/controls/permission_handler/example_1.py index 534431b596..fe97dad852 100644 --- a/sdk/python/examples/controls/permission_handler/example_1.py +++ b/sdk/python/examples/controls/permission_handler/example_1.py @@ -1,6 +1,5 @@ -import flet_permission_handler as fph - import flet as ft +import flet_permission_handler as fph def main(page: ft.Page): @@ -24,12 +23,18 @@ async def open_app_settings(e: ft.Event[ft.OutlinedButton]): ph = fph.PermissionHandler() page.add( - ft.OutlinedButton("Open app settings", on_click=open_app_settings), ft.OutlinedButton("Request Microphone permission", on_click=request_permission), ft.OutlinedButton( - "Get Microphone permission status", on_click=get_permission_status + "Get Microphone permission status", + on_click=get_permission_status, + ), + ft.OutlinedButton( + "Open app settings", + on_click=open_app_settings, + disabled=page.web, ), ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/placeholder/__init__.py b/sdk/python/examples/controls/placeholder/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/placeholder/basic.py b/sdk/python/examples/controls/placeholder/basic.py index 9b2f0e197e..8e22b467ea 100644 --- a/sdk/python/examples/controls/placeholder/basic.py +++ b/sdk/python/examples/controls/placeholder/basic.py @@ -10,4 +10,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/placeholder/media/basic.png b/sdk/python/examples/controls/placeholder/media/basic.png deleted file mode 100644 index 7e4c082719..0000000000 Binary files a/sdk/python/examples/controls/placeholder/media/basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/popup_menu_button/__init__.py b/sdk/python/examples/controls/popup_menu_button/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/popup_menu_button/basic.py b/sdk/python/examples/controls/popup_menu_button/basic.py index 4bfe453a87..c64c8e1a0a 100644 --- a/sdk/python/examples/controls/popup_menu_button/basic.py +++ b/sdk/python/examples/controls/popup_menu_button/basic.py @@ -31,4 +31,5 @@ def handle_check_item_click(e: ft.Event[ft.PopupMenuItem]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/popup_menu_button/media/basic.gif b/sdk/python/examples/controls/popup_menu_button/media/basic.gif deleted file mode 100644 index 893f023ee7..0000000000 Binary files a/sdk/python/examples/controls/popup_menu_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/popup_menu_button/media/index.gif b/sdk/python/examples/controls/popup_menu_button/media/index.gif deleted file mode 100644 index 26a8d3595d..0000000000 Binary files a/sdk/python/examples/controls/popup_menu_button/media/index.gif and /dev/null differ diff --git a/sdk/python/examples/controls/progress_bar/__init__.py b/sdk/python/examples/controls/progress_bar/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/progress_bar/determinate_and_indeterminate.py b/sdk/python/examples/controls/progress_bar/determinate_and_indeterminate.py index f20a997048..62c2973ae5 100644 --- a/sdk/python/examples/controls/progress_bar/determinate_and_indeterminate.py +++ b/sdk/python/examples/controls/progress_bar/determinate_and_indeterminate.py @@ -28,4 +28,5 @@ async def main(page: ft.Page): page.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/progress_bar/media/determinate_and_indeterminate.gif b/sdk/python/examples/controls/progress_bar/media/determinate_and_indeterminate.gif deleted file mode 100644 index ca79c8d9e8..0000000000 Binary files a/sdk/python/examples/controls/progress_bar/media/determinate_and_indeterminate.gif and /dev/null differ diff --git a/sdk/python/examples/controls/progress_ring/__init__.py b/sdk/python/examples/controls/progress_ring/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/progress_ring/determinate_and_indeterminate.py b/sdk/python/examples/controls/progress_ring/determinate_and_indeterminate.py index 025b85686e..15133cefc1 100644 --- a/sdk/python/examples/controls/progress_ring/determinate_and_indeterminate.py +++ b/sdk/python/examples/controls/progress_ring/determinate_and_indeterminate.py @@ -35,4 +35,5 @@ async def main(page: ft.Page): page.update() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/progress_ring/gauge_with_progress.py b/sdk/python/examples/controls/progress_ring/gauge_with_progress.py index 43ff062828..d4d811b18a 100644 --- a/sdk/python/examples/controls/progress_ring/gauge_with_progress.py +++ b/sdk/python/examples/controls/progress_ring/gauge_with_progress.py @@ -14,4 +14,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/progress_ring/media/determinate_and_indeterminate.gif b/sdk/python/examples/controls/progress_ring/media/determinate_and_indeterminate.gif deleted file mode 100644 index a0eea5b793..0000000000 Binary files a/sdk/python/examples/controls/progress_ring/media/determinate_and_indeterminate.gif and /dev/null differ diff --git a/sdk/python/examples/controls/radio/__init__.py b/sdk/python/examples/controls/radio/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/radio/basic.py b/sdk/python/examples/controls/radio/basic.py index b37e8a57e3..3626560072 100644 --- a/sdk/python/examples/controls/radio/basic.py +++ b/sdk/python/examples/controls/radio/basic.py @@ -22,4 +22,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/radio/handling_selection_changes.py b/sdk/python/examples/controls/radio/handling_selection_changes.py index c0cfa14fff..fef5632f5c 100644 --- a/sdk/python/examples/controls/radio/handling_selection_changes.py +++ b/sdk/python/examples/controls/radio/handling_selection_changes.py @@ -22,4 +22,5 @@ def handle_selection_change(e: ft.Event[ft.RadioGroup]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/radio/media/basic.gif b/sdk/python/examples/controls/radio/media/basic.gif deleted file mode 100644 index b733d95e46..0000000000 Binary files a/sdk/python/examples/controls/radio/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/radio/media/handling_selection_changes.gif b/sdk/python/examples/controls/radio/media/handling_selection_changes.gif deleted file mode 100644 index 871f676fb9..0000000000 Binary files a/sdk/python/examples/controls/radio/media/handling_selection_changes.gif and /dev/null differ diff --git a/sdk/python/examples/controls/radio/media/index.png b/sdk/python/examples/controls/radio/media/index.png deleted file mode 100644 index b8e620e3ad..0000000000 Binary files a/sdk/python/examples/controls/radio/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/radio/styled.py b/sdk/python/examples/controls/radio/styled.py index 40f5111117..6188ee0307 100644 --- a/sdk/python/examples/controls/radio/styled.py +++ b/sdk/python/examples/controls/radio/styled.py @@ -27,4 +27,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/range_slider/__init__.py b/sdk/python/examples/controls/range_slider/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/range_slider/basic.py b/sdk/python/examples/controls/range_slider/basic.py index 0920eaf5dc..b961c15b3c 100644 --- a/sdk/python/examples/controls/range_slider/basic.py +++ b/sdk/python/examples/controls/range_slider/basic.py @@ -28,4 +28,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/range_slider/handling_change_events.py b/sdk/python/examples/controls/range_slider/handling_change_events.py index 395bea7e0c..b7123997ee 100644 --- a/sdk/python/examples/controls/range_slider/handling_change_events.py +++ b/sdk/python/examples/controls/range_slider/handling_change_events.py @@ -41,4 +41,5 @@ def handle_slider_change_end(e: ft.Event[ft.RangeSlider]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/range_slider/media/basic.gif b/sdk/python/examples/controls/range_slider/media/basic.gif deleted file mode 100644 index b21b0f78c4..0000000000 Binary files a/sdk/python/examples/controls/range_slider/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/reorderable_drag_handle/__init__.py b/sdk/python/examples/controls/reorderable_drag_handle/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/reorderable_drag_handle/basic.py b/sdk/python/examples/controls/reorderable_drag_handle/basic.py index f3299321c6..492352c15a 100644 --- a/sdk/python/examples/controls/reorderable_drag_handle/basic.py +++ b/sdk/python/examples/controls/reorderable_drag_handle/basic.py @@ -27,4 +27,5 @@ def on_reorder(e: ft.OnReorderEvent): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/reorderable_draggable/__init__.py b/sdk/python/examples/controls/reorderable_draggable/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/reorderable_list_view/__init__.py b/sdk/python/examples/controls/reorderable_list_view/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/reorderable_list_view/horizontal_and_vertical.py b/sdk/python/examples/controls/reorderable_list_view/horizontal_and_vertical.py index 4db4e56097..a24d35269c 100644 --- a/sdk/python/examples/controls/reorderable_list_view/horizontal_and_vertical.py +++ b/sdk/python/examples/controls/reorderable_list_view/horizontal_and_vertical.py @@ -46,4 +46,5 @@ def get_color(i): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/reorderable_list_view/media/horizontal_and_vertical.gif b/sdk/python/examples/controls/reorderable_list_view/media/horizontal_and_vertical.gif deleted file mode 100644 index 3e5996f89a..0000000000 Binary files a/sdk/python/examples/controls/reorderable_list_view/media/horizontal_and_vertical.gif and /dev/null differ diff --git a/sdk/python/examples/controls/responsive_row/__init__.py b/sdk/python/examples/controls/responsive_row/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/responsive_row/basic.py b/sdk/python/examples/controls/responsive_row/basic.py index d91cbaddaa..977a1b11ec 100644 --- a/sdk/python/examples/controls/responsive_row/basic.py +++ b/sdk/python/examples/controls/responsive_row/basic.py @@ -78,4 +78,5 @@ def handle_page_resize(e: ft.PageResizeEvent): handle_page_resize(None) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/responsive_row/custom_breakpoint.py b/sdk/python/examples/controls/responsive_row/custom_breakpoint.py index bab9f64b5f..4be2c3fd56 100644 --- a/sdk/python/examples/controls/responsive_row/custom_breakpoint.py +++ b/sdk/python/examples/controls/responsive_row/custom_breakpoint.py @@ -99,4 +99,5 @@ def update_status(_=None): update_status() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/responsive_row/media/basic.gif b/sdk/python/examples/controls/responsive_row/media/basic.gif deleted file mode 100644 index 697447a03c..0000000000 Binary files a/sdk/python/examples/controls/responsive_row/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/rive/__init__.py b/sdk/python/examples/controls/rive/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/rive/assets/__init__.py b/sdk/python/examples/controls/rive/assets/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/rive/example_1.py b/sdk/python/examples/controls/rive/example_1.py index e1b1447e4a..80865afff5 100644 --- a/sdk/python/examples/controls/rive/example_1.py +++ b/sdk/python/examples/controls/rive/example_1.py @@ -1,6 +1,5 @@ -import flet_rive as ftr - import flet as ft +import flet_rive as ftr def main(page: ft.Page): @@ -20,4 +19,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/rocket.py b/sdk/python/examples/controls/rocket.py index 67b2db9920..fbc4a3b0b4 100644 --- a/sdk/python/examples/controls/rocket.py +++ b/sdk/python/examples/controls/rocket.py @@ -42,4 +42,5 @@ def animate(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/row/media/alignment.png b/sdk/python/examples/controls/row/media/alignment.png deleted file mode 100644 index 98d6d3adee..0000000000 Binary files a/sdk/python/examples/controls/row/media/alignment.png and /dev/null differ diff --git a/sdk/python/examples/controls/row/media/spacing.gif b/sdk/python/examples/controls/row/media/spacing.gif deleted file mode 100644 index a05a7a3f93..0000000000 Binary files a/sdk/python/examples/controls/row/media/spacing.gif and /dev/null differ diff --git a/sdk/python/examples/controls/row/media/vertical_alignment.png b/sdk/python/examples/controls/row/media/vertical_alignment.png deleted file mode 100644 index 50778f83a2..0000000000 Binary files a/sdk/python/examples/controls/row/media/vertical_alignment.png and /dev/null differ diff --git a/sdk/python/examples/controls/row/media/wrap.gif b/sdk/python/examples/controls/row/media/wrap.gif deleted file mode 100644 index 6846bb2efd..0000000000 Binary files a/sdk/python/examples/controls/row/media/wrap.gif and /dev/null differ diff --git a/sdk/python/examples/controls/row/vertical_alignment.py b/sdk/python/examples/controls/row/vertical_alignment.py index 6a4d240a8b..3ab97159d0 100644 --- a/sdk/python/examples/controls/row/vertical_alignment.py +++ b/sdk/python/examples/controls/row/vertical_alignment.py @@ -28,6 +28,8 @@ def generate_items(count: int): def main(page: ft.Page): + page.scroll = ft.ScrollMode.AUTO + page.add( RowWithVerticalAlignment(ft.CrossAxisAlignment.START), RowWithVerticalAlignment(ft.CrossAxisAlignment.CENTER), diff --git a/sdk/python/examples/controls/safe_area/__init__.py b/sdk/python/examples/controls/safe_area/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/safe_area/basic.py b/sdk/python/examples/controls/safe_area/basic.py index 649efc1712..2a6bb81c08 100644 --- a/sdk/python/examples/controls/safe_area/basic.py +++ b/sdk/python/examples/controls/safe_area/basic.py @@ -29,4 +29,5 @@ def handle_button_click(e: ft.Event[ft.FloatingActionButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/screenshot/__init__.py b/sdk/python/examples/controls/screenshot/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/screenshot/taking_screenshot.py b/sdk/python/examples/controls/screenshot/taking_screenshot.py index 89f32507d1..2439b0104c 100644 --- a/sdk/python/examples/controls/screenshot/taking_screenshot.py +++ b/sdk/python/examples/controls/screenshot/taking_screenshot.py @@ -21,4 +21,5 @@ async def take_screenshot(): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/search_bar/media/basic.gif b/sdk/python/examples/controls/search_bar/media/basic.gif deleted file mode 100644 index 5b4623cd48..0000000000 Binary files a/sdk/python/examples/controls/search_bar/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/segmented_button/media/basic.gif b/sdk/python/examples/controls/segmented_button/media/basic.gif deleted file mode 100644 index 3f1d5e3b0b..0000000000 Binary files a/sdk/python/examples/controls/segmented_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/selection_area/media/basic.gif b/sdk/python/examples/controls/selection_area/media/basic.gif deleted file mode 100644 index cfa38e94a9..0000000000 Binary files a/sdk/python/examples/controls/selection_area/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/semantics/__init__.py b/sdk/python/examples/controls/semantics/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/semantics/basic.py b/sdk/python/examples/controls/semantics/basic.py index 6540f4b080..5e2cd388c4 100644 --- a/sdk/python/examples/controls/semantics/basic.py +++ b/sdk/python/examples/controls/semantics/basic.py @@ -27,4 +27,5 @@ def handle_lose_accessibility_focus(e: ft.Event[ft.Semantics]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/semantics_service/__init__.py b/sdk/python/examples/controls/semantics_service/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/semantics_service/accessibility_features.py b/sdk/python/examples/controls/semantics_service/accessibility_features.py index 3c5fe50e12..6164a68293 100644 --- a/sdk/python/examples/controls/semantics_service/accessibility_features.py +++ b/sdk/python/examples/controls/semantics_service/accessibility_features.py @@ -30,4 +30,5 @@ async def refresh_features(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/shader_mask/media/fade_out_image_bottom.png b/sdk/python/examples/controls/shader_mask/media/fade_out_image_bottom.png deleted file mode 100644 index a9921a0805..0000000000 Binary files a/sdk/python/examples/controls/shader_mask/media/fade_out_image_bottom.png and /dev/null differ diff --git a/sdk/python/examples/controls/shader_mask/media/pink_radial_glow.png b/sdk/python/examples/controls/shader_mask/media/pink_radial_glow.png deleted file mode 100644 index b48de21ece..0000000000 Binary files a/sdk/python/examples/controls/shader_mask/media/pink_radial_glow.png and /dev/null differ diff --git a/sdk/python/examples/controls/shake_detector/__init__.py b/sdk/python/examples/controls/shake_detector/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/shake_detector/basic.py b/sdk/python/examples/controls/shake_detector/basic.py index 09d0a63c89..1463dc8286 100644 --- a/sdk/python/examples/controls/shake_detector/basic.py +++ b/sdk/python/examples/controls/shake_detector/basic.py @@ -14,4 +14,5 @@ def main(page: ft.Page): page.add(ft.Text("Shake your device!")) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/snack_bar/media/basic.gif b/sdk/python/examples/controls/snack_bar/media/basic.gif deleted file mode 100644 index 03bcca3280..0000000000 Binary files a/sdk/python/examples/controls/snack_bar/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/stack/media/absolute_positioning.png b/sdk/python/examples/controls/stack/media/absolute_positioning.png deleted file mode 100644 index 0ddf3fd794..0000000000 Binary files a/sdk/python/examples/controls/stack/media/absolute_positioning.png and /dev/null differ diff --git a/sdk/python/examples/controls/stack/media/online_avatar.png b/sdk/python/examples/controls/stack/media/online_avatar.png deleted file mode 100644 index e8dd15ab4a..0000000000 Binary files a/sdk/python/examples/controls/stack/media/online_avatar.png and /dev/null differ diff --git a/sdk/python/examples/controls/stack/media/text_on_image.png b/sdk/python/examples/controls/stack/media/text_on_image.png deleted file mode 100644 index dc4dae269f..0000000000 Binary files a/sdk/python/examples/controls/stack/media/text_on_image.png and /dev/null differ diff --git a/sdk/python/examples/controls/stack/text_on_image.py b/sdk/python/examples/controls/stack/text_on_image.py index dfff5b0e43..8857863a51 100644 --- a/sdk/python/examples/controls/stack/text_on_image.py +++ b/sdk/python/examples/controls/stack/text_on_image.py @@ -30,4 +30,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/submenu_button/media/basic.gif b/sdk/python/examples/controls/submenu_button/media/basic.gif deleted file mode 100644 index c1579e183f..0000000000 Binary files a/sdk/python/examples/controls/submenu_button/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/switch/media/basic.gif b/sdk/python/examples/controls/switch/media/basic.gif deleted file mode 100644 index a623f8b4ab..0000000000 Binary files a/sdk/python/examples/controls/switch/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/switch/media/handling_events.gif b/sdk/python/examples/controls/switch/media/handling_events.gif deleted file mode 100644 index a3587440e2..0000000000 Binary files a/sdk/python/examples/controls/switch/media/handling_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/switch/media/index.png b/sdk/python/examples/controls/switch/media/index.png deleted file mode 100644 index 8f2057d6e6..0000000000 Binary files a/sdk/python/examples/controls/switch/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/tabs/dynamic_tab_addition.py b/sdk/python/examples/controls/tabs/dynamic_tab_addition.py index b419abab6f..ccf0cf75d8 100644 --- a/sdk/python/examples/controls/tabs/dynamic_tab_addition.py +++ b/sdk/python/examples/controls/tabs/dynamic_tab_addition.py @@ -55,4 +55,5 @@ def handle_new_tab(e: ft.Event[ft.CupertinoFilledButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/tabs/media/basic.gif b/sdk/python/examples/controls/tabs/media/basic.gif deleted file mode 100644 index f49ce72451..0000000000 Binary files a/sdk/python/examples/controls/tabs/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/tabs/move_to.py b/sdk/python/examples/controls/tabs/move_to.py index 9859fed3cf..24bb600d40 100644 --- a/sdk/python/examples/controls/tabs/move_to.py +++ b/sdk/python/examples/controls/tabs/move_to.py @@ -74,4 +74,5 @@ async def handle_move_to_random(e: ft.Event[ft.FloatingActionButton]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/__init__.py b/sdk/python/examples/controls/text/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/text/custom_styles.py b/sdk/python/examples/controls/text/custom_styles.py index fa7824d3ec..14e2913d4a 100644 --- a/sdk/python/examples/controls/text/custom_styles.py +++ b/sdk/python/examples/controls/text/custom_styles.py @@ -65,4 +65,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/media/custom_styles.gif b/sdk/python/examples/controls/text/media/custom_styles.gif deleted file mode 100644 index 5339429ef9..0000000000 Binary files a/sdk/python/examples/controls/text/media/custom_styles.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text/media/rich_text_basic.png b/sdk/python/examples/controls/text/media/rich_text_basic.png deleted file mode 100644 index 818b09d0d2..0000000000 Binary files a/sdk/python/examples/controls/text/media/rich_text_basic.png and /dev/null differ diff --git a/sdk/python/examples/controls/text/media/rich_text_border_stroke.png b/sdk/python/examples/controls/text/media/rich_text_border_stroke.png deleted file mode 100644 index 53e17a24ac..0000000000 Binary files a/sdk/python/examples/controls/text/media/rich_text_border_stroke.png and /dev/null differ diff --git a/sdk/python/examples/controls/text/media/rich_text_gradient.png b/sdk/python/examples/controls/text/media/rich_text_gradient.png deleted file mode 100644 index 573d91b2bd..0000000000 Binary files a/sdk/python/examples/controls/text/media/rich_text_gradient.png and /dev/null differ diff --git a/sdk/python/examples/controls/text/media/text_theme_styles.png b/sdk/python/examples/controls/text/media/text_theme_styles.png deleted file mode 100644 index 4e0c6e6bb7..0000000000 Binary files a/sdk/python/examples/controls/text/media/text_theme_styles.png and /dev/null differ diff --git a/sdk/python/examples/controls/text/media/variable_font_weight.gif b/sdk/python/examples/controls/text/media/variable_font_weight.gif deleted file mode 100644 index 5fadf0ca54..0000000000 Binary files a/sdk/python/examples/controls/text/media/variable_font_weight.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text/rich_text_basic.py b/sdk/python/examples/controls/text/rich_text_basic.py index 44e8cb2f6e..1d359c5c2b 100644 --- a/sdk/python/examples/controls/text/rich_text_basic.py +++ b/sdk/python/examples/controls/text/rich_text_basic.py @@ -100,4 +100,5 @@ def handle_link_unhighlight(e: ft.Event[ft.TextSpan]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/rich_text_border_stroke.py b/sdk/python/examples/controls/text/rich_text_border_stroke.py index 4a702e657c..b3aca0a3a0 100644 --- a/sdk/python/examples/controls/text/rich_text_border_stroke.py +++ b/sdk/python/examples/controls/text/rich_text_border_stroke.py @@ -38,4 +38,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/rich_text_gradient.py b/sdk/python/examples/controls/text/rich_text_gradient.py index 9941aaaf46..77c8817c16 100644 --- a/sdk/python/examples/controls/text/rich_text_gradient.py +++ b/sdk/python/examples/controls/text/rich_text_gradient.py @@ -24,4 +24,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/text_theme_styles.py b/sdk/python/examples/controls/text/text_theme_styles.py index cd156bd24c..ebefb7c244 100644 --- a/sdk/python/examples/controls/text/text_theme_styles.py +++ b/sdk/python/examples/controls/text/text_theme_styles.py @@ -24,4 +24,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text/variable_font_weight.py b/sdk/python/examples/controls/text/variable_font_weight.py index 91b1debdba..2095927309 100644 --- a/sdk/python/examples/controls/text/variable_font_weight.py +++ b/sdk/python/examples/controls/text/variable_font_weight.py @@ -28,4 +28,5 @@ def handle_slider_change(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_button/media/adaptive.png b/sdk/python/examples/controls/text_button/media/adaptive.png deleted file mode 100644 index df99b3b3ba..0000000000 Binary files a/sdk/python/examples/controls/text_button/media/adaptive.png and /dev/null differ diff --git a/sdk/python/examples/controls/text_button/media/index.png b/sdk/python/examples/controls/text_button/media/index.png deleted file mode 100644 index 45e7e870b1..0000000000 Binary files a/sdk/python/examples/controls/text_button/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/__init__.py b/sdk/python/examples/controls/text_field/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/text_field/basic.py b/sdk/python/examples/controls/text_field/basic.py index e592be84af..633476f3ea 100644 --- a/sdk/python/examples/controls/text_field/basic.py +++ b/sdk/python/examples/controls/text_field/basic.py @@ -20,4 +20,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/handling_change_events.py b/sdk/python/examples/controls/text_field/handling_change_events.py index 1dbf5585ef..7b429ff852 100644 --- a/sdk/python/examples/controls/text_field/handling_change_events.py +++ b/sdk/python/examples/controls/text_field/handling_change_events.py @@ -15,4 +15,5 @@ def handle_field_change(e: ft.Event[ft.TextField]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/label_hint_helper_counter.py b/sdk/python/examples/controls/text_field/label_hint_helper_counter.py index 66f426a819..9005353da1 100644 --- a/sdk/python/examples/controls/text_field/label_hint_helper_counter.py +++ b/sdk/python/examples/controls/text_field/label_hint_helper_counter.py @@ -52,4 +52,5 @@ def handle_field_change(e: ft.Event[ft.TextField]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/media/basic.gif b/sdk/python/examples/controls/text_field/media/basic.gif deleted file mode 100644 index 3305656fd8..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/basic.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/handling_change_events.gif b/sdk/python/examples/controls/text_field/media/handling_change_events.gif deleted file mode 100644 index 4b87116cad..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/handling_change_events.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/index.png b/sdk/python/examples/controls/text_field/media/index.png deleted file mode 100644 index 3f8cc55504..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/index.png and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/multiline.gif b/sdk/python/examples/controls/text_field/media/multiline.gif deleted file mode 100644 index 297253cf2e..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/multiline.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/password.gif b/sdk/python/examples/controls/text_field/media/password.gif deleted file mode 100644 index 3e5e66780e..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/password.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/prefix_and_suffix.gif b/sdk/python/examples/controls/text_field/media/prefix_and_suffix.gif deleted file mode 100644 index b1dfdabe9e..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/prefix_and_suffix.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/media/underlined_and_borderless.gif b/sdk/python/examples/controls/text_field/media/underlined_and_borderless.gif deleted file mode 100644 index 7ccb7adfc5..0000000000 Binary files a/sdk/python/examples/controls/text_field/media/underlined_and_borderless.gif and /dev/null differ diff --git a/sdk/python/examples/controls/text_field/multiline.py b/sdk/python/examples/controls/text_field/multiline.py index 8b980a11aa..42266bb5b0 100644 --- a/sdk/python/examples/controls/text_field/multiline.py +++ b/sdk/python/examples/controls/text_field/multiline.py @@ -22,4 +22,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/password.py b/sdk/python/examples/controls/text_field/password.py index a15b063f94..9a127375a8 100644 --- a/sdk/python/examples/controls/text_field/password.py +++ b/sdk/python/examples/controls/text_field/password.py @@ -11,4 +11,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/prefix_and_suffix.py b/sdk/python/examples/controls/text_field/prefix_and_suffix.py index 0007346b47..b7ae2b4fec 100644 --- a/sdk/python/examples/controls/text_field/prefix_and_suffix.py +++ b/sdk/python/examples/controls/text_field/prefix_and_suffix.py @@ -36,4 +36,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/styled.py b/sdk/python/examples/controls/text_field/styled.py index fe2aca1f4c..00873db5a4 100644 --- a/sdk/python/examples/controls/text_field/styled.py +++ b/sdk/python/examples/controls/text_field/styled.py @@ -24,4 +24,5 @@ async def main(page: ft.Page): await tf.focus() -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/text_field/underlined_and_borderless.py b/sdk/python/examples/controls/text_field/underlined_and_borderless.py index 24c0d67e44..d5f3b76ae0 100644 --- a/sdk/python/examples/controls/text_field/underlined_and_borderless.py +++ b/sdk/python/examples/controls/text_field/underlined_and_borderless.py @@ -28,4 +28,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/transparent_pointer/__init__.py b/sdk/python/examples/controls/transparent_pointer/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/transparent_pointer/basic.py b/sdk/python/examples/controls/transparent_pointer/basic.py index cce31e3e27..871d3b5c48 100644 --- a/sdk/python/examples/controls/transparent_pointer/basic.py +++ b/sdk/python/examples/controls/transparent_pointer/basic.py @@ -26,4 +26,5 @@ def button_clicked(e): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/__init__.py b/sdk/python/examples/controls/types/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/alignment/__init__.py b/sdk/python/examples/controls/types/alignment/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/alignment/container.py b/sdk/python/examples/controls/types/alignment/basic.py similarity index 96% rename from sdk/python/examples/controls/types/alignment/container.py rename to sdk/python/examples/controls/types/alignment/basic.py index 3ce99ab2a6..c015b43cc0 100644 --- a/sdk/python/examples/controls/types/alignment/container.py +++ b/sdk/python/examples/controls/types/alignment/basic.py @@ -36,4 +36,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/alignment/media/container.png b/sdk/python/examples/controls/types/alignment/media/container.png deleted file mode 100644 index fbbf766e69..0000000000 Binary files a/sdk/python/examples/controls/types/alignment/media/container.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/alignment/media/overview.png b/sdk/python/examples/controls/types/alignment/media/overview.png deleted file mode 100644 index 8a09665fb8..0000000000 Binary files a/sdk/python/examples/controls/types/alignment/media/overview.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/badge/__init__.py b/sdk/python/examples/controls/types/badge/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/badge/media/in_navigation_bar.png b/sdk/python/examples/controls/types/badge/media/in_navigation_bar.png deleted file mode 100644 index 696af03f16..0000000000 Binary files a/sdk/python/examples/controls/types/badge/media/in_navigation_bar.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/blur/__init__.py b/sdk/python/examples/controls/types/blur/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/blur/container.py b/sdk/python/examples/controls/types/blur/basic.py similarity index 97% rename from sdk/python/examples/controls/types/blur/container.py rename to sdk/python/examples/controls/types/blur/basic.py index b2ea37d6a3..b542508e50 100644 --- a/sdk/python/examples/controls/types/blur/container.py +++ b/sdk/python/examples/controls/types/blur/basic.py @@ -58,4 +58,5 @@ def handle_button_click(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/blur/media/container.gif b/sdk/python/examples/controls/types/blur/media/container.gif deleted file mode 100644 index 74be430125..0000000000 Binary files a/sdk/python/examples/controls/types/blur/media/container.gif and /dev/null differ diff --git a/sdk/python/examples/controls/types/border/__init__.py b/sdk/python/examples/controls/types/border/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/border/container.py b/sdk/python/examples/controls/types/border/basic.py similarity index 96% rename from sdk/python/examples/controls/types/border/container.py rename to sdk/python/examples/controls/types/border/basic.py index a8cc860faa..653ae9be02 100644 --- a/sdk/python/examples/controls/types/border/container.py +++ b/sdk/python/examples/controls/types/border/basic.py @@ -37,4 +37,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/box_shadow/__init__.py b/sdk/python/examples/controls/types/box_shadow/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/box_shadow/container.py b/sdk/python/examples/controls/types/box_shadow/basic.py similarity index 96% rename from sdk/python/examples/controls/types/box_shadow/container.py rename to sdk/python/examples/controls/types/box_shadow/basic.py index eb44b9fc18..2ed5d09528 100644 --- a/sdk/python/examples/controls/types/box_shadow/container.py +++ b/sdk/python/examples/controls/types/box_shadow/basic.py @@ -39,4 +39,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/context/__init__.py b/sdk/python/examples/controls/types/context/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/context/disable_auto_update.py b/sdk/python/examples/controls/types/context/disable_auto_update.py index 171892877e..47fee982d3 100644 --- a/sdk/python/examples/controls/types/context/disable_auto_update.py +++ b/sdk/python/examples/controls/types/context/disable_auto_update.py @@ -15,4 +15,5 @@ def button_click(): # page.update() - auto-update is enabled by default -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/context/get_page.py b/sdk/python/examples/controls/types/context/get_page.py index 39d5d8331f..7be7be96f1 100644 --- a/sdk/python/examples/controls/types/context/get_page.py +++ b/sdk/python/examples/controls/types/context/get_page.py @@ -8,4 +8,5 @@ def button_click(e): page.add(ft.Button("Get page width", on_click=button_click)) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/cross_axis_alignment/__init__.py b/sdk/python/examples/controls/types/cross_axis_alignment/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/cross_axis_alignment/basic.py b/sdk/python/examples/controls/types/cross_axis_alignment/basic.py new file mode 100644 index 0000000000..2eecdf4281 --- /dev/null +++ b/sdk/python/examples/controls/types/cross_axis_alignment/basic.py @@ -0,0 +1,49 @@ +import flet as ft + + +def main(page: ft.Page): + def get_items(count): + items = [] + for i in range(1, count + 1): + items.append( + ft.Container( + content=ft.Text(value=str(i)), + alignment=ft.Alignment.CENTER, + width=50, + height=50, + bgcolor=ft.Colors.AMBER_500, + ) + ) + return items + + def column_with_horiz_alignment(alignment: ft.CrossAxisAlignment): + return ft.Column( + controls=[ + ft.Text(alignment.name, size=16), + ft.Container( + bgcolor=ft.Colors.AMBER_100, + width=100, + content=ft.Column( + get_items(3), + alignment=ft.MainAxisAlignment.START, + horizontal_alignment=alignment, + ), + ), + ] + ) + + page.add( + ft.Row( + spacing=25, + alignment=ft.MainAxisAlignment.START, + controls=[ + column_with_horiz_alignment(ft.CrossAxisAlignment.START), + column_with_horiz_alignment(ft.CrossAxisAlignment.CENTER), + column_with_horiz_alignment(ft.CrossAxisAlignment.END), + ], + ) + ) + + +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/gradient/__init__.py b/sdk/python/examples/controls/types/gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/gradient/container.py b/sdk/python/examples/controls/types/gradient/basic.py similarity index 98% rename from sdk/python/examples/controls/types/gradient/container.py rename to sdk/python/examples/controls/types/gradient/basic.py index deb3a4fc82..d1a24ddbef 100644 --- a/sdk/python/examples/controls/types/gradient/container.py +++ b/sdk/python/examples/controls/types/gradient/basic.py @@ -92,4 +92,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/gradient/linear_gradient/__init__.py b/sdk/python/examples/controls/types/gradient/linear_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/gradient/linear_gradient/container.py b/sdk/python/examples/controls/types/gradient/linear_gradient/basic.py similarity index 94% rename from sdk/python/examples/controls/types/gradient/linear_gradient/container.py rename to sdk/python/examples/controls/types/gradient/linear_gradient/basic.py index e90a2a46e2..755fa3d98a 100644 --- a/sdk/python/examples/controls/types/gradient/linear_gradient/container.py +++ b/sdk/python/examples/controls/types/gradient/linear_gradient/basic.py @@ -30,4 +30,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/gradient/linear_gradient/media/container.png b/sdk/python/examples/controls/types/gradient/linear_gradient/media/container.png deleted file mode 100644 index 104af1221d..0000000000 Binary files a/sdk/python/examples/controls/types/gradient/linear_gradient/media/container.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/gradient/radial_gradient/__init__.py b/sdk/python/examples/controls/types/gradient/radial_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/gradient/radial_gradient/container.py b/sdk/python/examples/controls/types/gradient/radial_gradient/basic.py similarity index 91% rename from sdk/python/examples/controls/types/gradient/radial_gradient/container.py rename to sdk/python/examples/controls/types/gradient/radial_gradient/basic.py index 9412477196..a68523b8fc 100644 --- a/sdk/python/examples/controls/types/gradient/radial_gradient/container.py +++ b/sdk/python/examples/controls/types/gradient/radial_gradient/basic.py @@ -18,4 +18,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/gradient/radial_gradient/media/container.png b/sdk/python/examples/controls/types/gradient/radial_gradient/media/container.png deleted file mode 100644 index c0ae75a100..0000000000 Binary files a/sdk/python/examples/controls/types/gradient/radial_gradient/media/container.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/gradient/sweep_gradient/__init__.py b/sdk/python/examples/controls/types/gradient/sweep_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/gradient/sweep_gradient/container.py b/sdk/python/examples/controls/types/gradient/sweep_gradient/basic.py similarity index 93% rename from sdk/python/examples/controls/types/gradient/sweep_gradient/container.py rename to sdk/python/examples/controls/types/gradient/sweep_gradient/basic.py index 6e85fb51f8..aed1fe8dce 100644 --- a/sdk/python/examples/controls/types/gradient/sweep_gradient/container.py +++ b/sdk/python/examples/controls/types/gradient/sweep_gradient/basic.py @@ -27,4 +27,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/gradient/sweep_gradient/media/container.png b/sdk/python/examples/controls/types/gradient/sweep_gradient/media/container.png deleted file mode 100644 index a12bce96c1..0000000000 Binary files a/sdk/python/examples/controls/types/gradient/sweep_gradient/media/container.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/margin/__init__.py b/sdk/python/examples/controls/types/margin/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/margin/container.py b/sdk/python/examples/controls/types/margin/basic.py similarity index 97% rename from sdk/python/examples/controls/types/margin/container.py rename to sdk/python/examples/controls/types/margin/basic.py index 694ee35e41..90731aabc1 100644 --- a/sdk/python/examples/controls/types/margin/container.py +++ b/sdk/python/examples/controls/types/margin/basic.py @@ -45,4 +45,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/padding/__init__.py b/sdk/python/examples/controls/types/padding/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/padding/container.py b/sdk/python/examples/controls/types/padding/basic.py similarity index 96% rename from sdk/python/examples/controls/types/padding/container.py rename to sdk/python/examples/controls/types/padding/basic.py index 89f578601d..d372d1ec51 100644 --- a/sdk/python/examples/controls/types/padding/container.py +++ b/sdk/python/examples/controls/types/padding/basic.py @@ -40,4 +40,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/padding/media/container.png b/sdk/python/examples/controls/types/padding/media/container.png deleted file mode 100644 index 9785f99d04..0000000000 Binary files a/sdk/python/examples/controls/types/padding/media/container.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/paint_gradient/__init__.py b/sdk/python/examples/controls/types/paint_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/paint_gradient/canvas_paint.py b/sdk/python/examples/controls/types/paint_gradient/basic.py similarity index 98% rename from sdk/python/examples/controls/types/paint_gradient/canvas_paint.py rename to sdk/python/examples/controls/types/paint_gradient/basic.py index fe2b161bda..88858937b6 100644 --- a/sdk/python/examples/controls/types/paint_gradient/canvas_paint.py +++ b/sdk/python/examples/controls/types/paint_gradient/basic.py @@ -68,4 +68,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/__init__.py b/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/canvas_paint.py b/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/basic.py similarity index 94% rename from sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/canvas_paint.py rename to sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/basic.py index 088a985cff..61a1699918 100644 --- a/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/canvas_paint.py +++ b/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/basic.py @@ -28,4 +28,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/media/canvas_paint.png b/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/media/canvas_paint.png deleted file mode 100644 index 9a0e56ee47..0000000000 Binary files a/sdk/python/examples/controls/types/paint_gradient/paint_linear_gradient/media/canvas_paint.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/__init__.py b/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/canvas_paint.py b/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/basic.py similarity index 94% rename from sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/canvas_paint.py rename to sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/basic.py index 8ccae77728..2792c84342 100644 --- a/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/canvas_paint.py +++ b/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/basic.py @@ -26,4 +26,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/media/canvas_paint.png b/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/media/canvas_paint.png deleted file mode 100644 index 354919e3c0..0000000000 Binary files a/sdk/python/examples/controls/types/paint_gradient/paint_radial_gradient/media/canvas_paint.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/__init__.py b/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/canvas_paint.py b/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/basic.py similarity index 96% rename from sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/canvas_paint.py rename to sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/basic.py index 29fc05ce64..ba274cf796 100644 --- a/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/canvas_paint.py +++ b/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/basic.py @@ -40,4 +40,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/media/canvas_paint.png b/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/media/canvas_paint.png deleted file mode 100644 index d07c5d3093..0000000000 Binary files a/sdk/python/examples/controls/types/paint_gradient/paint_sweep_gradient/media/canvas_paint.png and /dev/null differ diff --git a/sdk/python/examples/controls/types/tooltip/__init__.py b/sdk/python/examples/controls/types/tooltip/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/types/tooltip/media/with_decoration.gif b/sdk/python/examples/controls/types/tooltip/media/with_decoration.gif deleted file mode 100644 index b931aff78b..0000000000 Binary files a/sdk/python/examples/controls/types/tooltip/media/with_decoration.gif and /dev/null differ diff --git a/sdk/python/examples/controls/types/tooltip/with_decoration.py b/sdk/python/examples/controls/types/tooltip/with_decoration.py index dc035b81ca..f9dbac8f1b 100644 --- a/sdk/python/examples/controls/types/tooltip/with_decoration.py +++ b/sdk/python/examples/controls/types/tooltip/with_decoration.py @@ -36,4 +36,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/video/__init__.py b/sdk/python/examples/controls/video/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/video/example_1.py b/sdk/python/examples/controls/video/example_1.py index 49b67cd638..3eaf0ccb9e 100644 --- a/sdk/python/examples/controls/video/example_1.py +++ b/sdk/python/examples/controls/video/example_1.py @@ -33,6 +33,7 @@ def main(page: ft.Page): page.spacing = 20 page.horizontal_alignment = ft.CrossAxisAlignment.CENTER + page.scroll = ft.ScrollMode.AUTO async def handle_pause(e: ft.Event[ft.Button]): await video.pause() @@ -79,6 +80,7 @@ async def handle_fullscreen(e: ft.Event[ft.Button]): expand=True, content=ft.Column( expand=True, + horizontal_alignment=ft.CrossAxisAlignment.CENTER, controls=[ video := ftv.Video( expand=True, @@ -137,4 +139,5 @@ async def handle_fullscreen(e: ft.Event[ft.Button]): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/examples/controls/webview/__init__.py b/sdk/python/examples/controls/webview/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/sdk/python/examples/controls/webview/example_1.py b/sdk/python/examples/controls/webview/example_1.py index 32495aa5ed..3e1ab43c75 100644 --- a/sdk/python/examples/controls/webview/example_1.py +++ b/sdk/python/examples/controls/webview/example_1.py @@ -1,6 +1,5 @@ -import flet_webview as fwv - import flet as ft +import flet_webview as fwv def main(page: ft.Page): @@ -15,4 +14,5 @@ def main(page: ft.Page): ) -ft.run(main) +if __name__ == "__main__": + ft.run(main) diff --git a/sdk/python/packages/flet-ads/src/flutter/flet_ads/pubspec.yaml b/sdk/python/packages/flet-ads/src/flutter/flet_ads/pubspec.yaml index 9af437ab1b..48ae902619 100644 --- a/sdk/python/packages/flet-ads/src/flutter/flet_ads/pubspec.yaml +++ b/sdk/python/packages/flet-ads/src/flutter/flet_ads/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-audio-recorder/src/flutter/flet_audio_recorder/pubspec.yaml b/sdk/python/packages/flet-audio-recorder/src/flutter/flet_audio_recorder/pubspec.yaml index 77e8cbd3b2..9049e2e0c3 100644 --- a/sdk/python/packages/flet-audio-recorder/src/flutter/flet_audio_recorder/pubspec.yaml +++ b/sdk/python/packages/flet-audio-recorder/src/flutter/flet_audio_recorder/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-audio/src/flutter/flet_audio/pubspec.yaml b/sdk/python/packages/flet-audio/src/flutter/flet_audio/pubspec.yaml index 3d74b9ea27..b9989a1cfc 100644 --- a/sdk/python/packages/flet-audio/src/flutter/flet_audio/pubspec.yaml +++ b/sdk/python/packages/flet-audio/src/flutter/flet_audio/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-charts/pyproject.toml b/sdk/python/packages/flet-charts/pyproject.toml index d6410a7075..8c4a6e63a7 100644 --- a/sdk/python/packages/flet-charts/pyproject.toml +++ b/sdk/python/packages/flet-charts/pyproject.toml @@ -10,6 +10,11 @@ dependencies = [ "flet", ] +[project.optional-dependencies] +all = ["matplotlib>=3.10.7", "plotly>=6.4.0", "kaleido>=1.2.0"] +plotly = ["plotly>=6.4.0", "kaleido>=1.2.0"] +matplotlib = ["matplotlib>=3.10.7"] + [project.urls] Homepage = "https://flet.dev" Documentation = "https://docs.flet.dev/charts" diff --git a/sdk/python/packages/flet-charts/src/flet_charts/plotly_chart.py b/sdk/python/packages/flet-charts/src/flet_charts/plotly_chart.py index dc93f704d7..701fc3841f 100644 --- a/sdk/python/packages/flet-charts/src/flet_charts/plotly_chart.py +++ b/sdk/python/packages/flet-charts/src/flet_charts/plotly_chart.py @@ -53,7 +53,7 @@ class PlotlyChart(ft.Container): def init(self): _require_plotly() self.alignment = ft.Alignment.CENTER - self.__img = ft.Image(fit=ft.BoxFit.FILL) + self.__img = ft.Image(src="", fit=ft.BoxFit.FILL) self.content = self.__img def before_update(self): diff --git a/sdk/python/packages/flet-charts/src/flutter/flet_charts/pubspec.yaml b/sdk/python/packages/flet-charts/src/flutter/flet_charts/pubspec.yaml index 86c058e89a..e6fc9f0731 100644 --- a/sdk/python/packages/flet-charts/src/flutter/flet_charts/pubspec.yaml +++ b/sdk/python/packages/flet-charts/src/flutter/flet_charts/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -22,4 +22,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-cli/src/flet_cli/commands/publish.py b/sdk/python/packages/flet-cli/src/flet_cli/commands/publish.py index b28549a524..fed23c03cc 100644 --- a/sdk/python/packages/flet-cli/src/flet_cli/commands/publish.py +++ b/sdk/python/packages/flet-cli/src/flet_cli/commands/publish.py @@ -6,7 +6,7 @@ import tempfile from pathlib import Path -from flet.controls.types import WebRenderer +from flet.controls.types import RouteUrlStrategy, WebRenderer from flet.utils import copy_tree, is_within_directory, random_string from flet_cli.commands.base import BaseCommand from flet_cli.utils.project_dependencies import ( @@ -152,21 +152,52 @@ def handle(self, options: argparse.Namespace) -> None: if script_path.is_dir(): script_path = script_path / "main.py" + # Keep script filename around so it can be rejoined after adjusting script_dir + script_filename = script_path.name + script_dir = script_path.parent - project_dir = Path(script_dir) + def resolve_project_dir(start_dir: Path) -> Path: + """Walk up from the script directory looking for a pyproject.toml. + If there isn't one, fall back to the closest directory that + contains requirements.txt, otherwise stick with the script dir.""" + current_dir = start_dir + requirements_dir = None + + while True: + candidate_pyproject = current_dir / "pyproject.toml" + if candidate_pyproject.exists(): + return current_dir + + candidate_requirements = current_dir / reqs_filename + if requirements_dir is None and candidate_requirements.exists(): + requirements_dir = current_dir + + parent_dir = current_dir.parent + if parent_dir == current_dir: + return requirements_dir or start_dir + + current_dir = parent_dir + + project_dir = resolve_project_dir(script_dir) get_pyproject = load_pyproject_toml(project_dir) - if get_pyproject("tool.flet.app.path"): - script_dir = script_dir.joinpath(get_pyproject("tool.flet.app.path")) - script_path = script_dir.joinpath( - os.path.basename(script_path), + app_path = get_pyproject("tool.flet.app.path") + if app_path: + # tool.flet.app.path can point to a subdirectory containing app sources + app_path_path = Path(app_path) + script_dir = ( + app_path_path + if app_path_path.is_absolute() + else project_dir.joinpath(app_path_path) ) + script_path = script_dir.joinpath(script_filename) # delete "dist" directory if options.distpath: dist_dir = Path(options.distpath) if not dist_dir.is_absolute(): + # Allow relative --distpath values to be resolved against project root dist_dir = project_dir.joinpath(dist_dir).resolve() else: dist_dir = project_dir.joinpath(dist_name) @@ -186,9 +217,12 @@ def handle(self, options: argparse.Namespace) -> None: # copy assets assets_dir = options.assets_dir if assets_dir and not Path(assets_dir).is_absolute(): + # User provided assets relative to the entry script assets_dir = str(script_path.joinpath(assets_dir).resolve()) else: - assets_dir = str(script_dir / assets_name) + # Fall back to ./assets next to the script + computed_default_assets_dir = str(script_dir / assets_name) + assets_dir = computed_default_assets_dir if os.path.exists(assets_dir): copy_tree(assets_dir, str(dist_dir)) @@ -214,8 +248,10 @@ def handle(self, options: argparse.Namespace) -> None: print(f"{reqs_filename} dependencies: {deps}") if len(deps) == 0: + # Ensure runtime has at least flet dependency if nothing specified deps = [f"flet=={flet.version.version}"] + # write deps to a temporary file to be included in the tar.gz archive temp_reqs_txt = Path(tempfile.gettempdir()).joinpath(random_string(10)) with open(temp_reqs_txt, "w", encoding="utf-8") as f: f.writelines(dep + "\n" for dep in deps) @@ -236,6 +272,7 @@ def filter_tar(tarinfo: tarfile.TarInfo): or is_within_directory(dist_dir, full_path) ): return None + # tarinfo.uid = tarinfo.gid = 0 # tarinfo.uname = tarinfo.gname = "root" if tarinfo.name != "": @@ -279,14 +316,6 @@ def filter_tar(tarinfo: tarfile.TarInfo): or get_pyproject("tool.poetry.description") ) - pwa_background_color = options.pwa_background_color or get_pyproject( - "tool.flet.web.pwa_background_color" - ) - - pwa_theme_color = options.pwa_theme_color or get_pyproject( - "tool.flet.web.pwa_theme_color" - ) - no_cdn = options.no_cdn or get_pyproject("tool.flet.web.cdn") == False # noqa: E712 print("Patching index.html") @@ -303,7 +332,7 @@ def filter_tar(tarinfo: tarfile.TarInfo): or get_pyproject("tool.flet.web.renderer") or "auto" ), - route_url_strategy=str( + route_url_strategy=RouteUrlStrategy( options.route_url_strategy or get_pyproject("tool.flet.web.route_url_strategy") or "path" @@ -317,8 +346,10 @@ def filter_tar(tarinfo: tarfile.TarInfo): app_name=app_name, app_short_name=app_short_name, app_description=app_description, - background_color=pwa_background_color, - theme_color=pwa_theme_color, + background_color=options.pwa_background_color + or get_pyproject("tool.flet.web.pwa_background_color"), + theme_color=options.pwa_theme_color + or get_pyproject("tool.flet.web.pwa_theme_color"), ) if no_cdn: diff --git a/sdk/python/packages/flet-datatable2/src/flutter/flet_datatable2/pubspec.yaml b/sdk/python/packages/flet-datatable2/src/flutter/flet_datatable2/pubspec.yaml index 1128910c74..a4288bbe41 100644 --- a/sdk/python/packages/flet-datatable2/src/flutter/flet_datatable2/pubspec.yaml +++ b/sdk/python/packages/flet-datatable2/src/flutter/flet_datatable2/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.3.0 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: data_table_2: 2.6.0 @@ -19,4 +19,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-flashlight/src/flutter/flet_flashlight/pubspec.yaml b/sdk/python/packages/flet-flashlight/src/flutter/flet_flashlight/pubspec.yaml index 1ca7a12bdf..53d27f242f 100644 --- a/sdk/python/packages/flet-flashlight/src/flutter/flet_flashlight/pubspec.yaml +++ b/sdk/python/packages/flet-flashlight/src/flutter/flet_flashlight/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-geolocator/src/flutter/flet_geolocator/pubspec.yaml b/sdk/python/packages/flet-geolocator/src/flutter/flet_geolocator/pubspec.yaml index 026d3bad9b..65a490d0f4 100644 --- a/sdk/python/packages/flet-geolocator/src/flutter/flet_geolocator/pubspec.yaml +++ b/sdk/python/packages/flet-geolocator/src/flutter/flet_geolocator/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-lottie/src/flutter/flet_lottie/pubspec.yaml b/sdk/python/packages/flet-lottie/src/flutter/flet_lottie/pubspec.yaml index f233e842db..1b8c998f06 100644 --- a/sdk/python/packages/flet-lottie/src/flutter/flet_lottie/pubspec.yaml +++ b/sdk/python/packages/flet-lottie/src/flutter/flet_lottie/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-map/src/flet_map/types.py b/sdk/python/packages/flet-map/src/flet_map/types.py index 90418851ae..053dbbbfcf 100644 --- a/sdk/python/packages/flet-map/src/flet_map/types.py +++ b/sdk/python/packages/flet-map/src/flet_map/types.py @@ -185,7 +185,7 @@ class DashedStrokePattern(StrokePattern): values must be strictly positive. 'Units' refers to pixels, unless the pattern has been scaled due to the - use of [`pattern_fit`][(c).] [`PatternFit.SCALE_UP`][flet.]. + [`pattern_fit`][(c).] being [`PatternFit.SCALE_UP`][flet_map.]. If more than two items are specified, then each segments will alternate/iterate through the values. diff --git a/sdk/python/packages/flet-map/src/flutter/flet_map/pubspec.yaml b/sdk/python/packages/flet-map/src/flutter/flet_map/pubspec.yaml index 4a04f656d5..b2f82d0fcf 100644 --- a/sdk/python/packages/flet-map/src/flutter/flet_map/pubspec.yaml +++ b/sdk/python/packages/flet-map/src/flutter/flet_map/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -22,4 +22,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-permission-handler/src/flutter/flet_permission_handler/pubspec.yaml b/sdk/python/packages/flet-permission-handler/src/flutter/flet_permission_handler/pubspec.yaml index ee7f793a14..f9a8f7a2c3 100644 --- a/sdk/python/packages/flet-permission-handler/src/flutter/flet_permission_handler/pubspec.yaml +++ b/sdk/python/packages/flet-permission-handler/src/flutter/flet_permission_handler/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-rive/src/flutter/flet_rive/pubspec.yaml b/sdk/python/packages/flet-rive/src/flutter/flet_rive/pubspec.yaml index 8195edac84..c1434cbbcc 100644 --- a/sdk/python/packages/flet-rive/src/flutter/flet_rive/pubspec.yaml +++ b/sdk/python/packages/flet-rive/src/flutter/flet_rive/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -20,4 +20,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-video/src/flutter/flet_video/pubspec.yaml b/sdk/python/packages/flet-video/src/flutter/flet_video/pubspec.yaml index e31c510793..52c3f25cdb 100644 --- a/sdk/python/packages/flet-video/src/flutter/flet_video/pubspec.yaml +++ b/sdk/python/packages/flet-video/src/flutter/flet_video/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -22,4 +22,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet-web/src/flet_web/__init__.py b/sdk/python/packages/flet-web/src/flet_web/__init__.py index 3beb3023af..bf7b01032c 100644 --- a/sdk/python/packages/flet-web/src/flet_web/__init__.py +++ b/sdk/python/packages/flet-web/src/flet_web/__init__.py @@ -13,4 +13,9 @@ def get_package_web_dir(): return web_root_dir or str(Path(__file__).parent.joinpath("web")) -__all__ = ["patch_font_manifest_json", "patch_index_html", "patch_manifest_json"] +__all__ = [ + "patch_font_manifest_json", + "patch_index_html", + "patch_manifest_json", + "get_package_web_dir", +] diff --git a/sdk/python/packages/flet-web/src/flet_web/patch_index.py b/sdk/python/packages/flet-web/src/flet_web/patch_index.py index 51fd682723..d90cce0223 100644 --- a/sdk/python/packages/flet-web/src/flet_web/patch_index.py +++ b/sdk/python/packages/flet-web/src/flet_web/patch_index.py @@ -6,6 +6,20 @@ from flet.controls.types import RouteUrlStrategy, WebRenderer +def _replace_flet_value(index: str, key: str, value: str) -> str: + """ + Replace a single property inside the `var flet = { ... }` block. + """ + pattern = rf"({re.escape(key)}\s*:\s*)([^,}}]+)" + replacement = rf"\1{value}" + return re.sub(pattern, replacement, index, flags=re.MULTILINE) + + +def _normalize_base(base_href: str) -> str: + base_url = base_href.strip("/").strip() if base_href else "" + return "/" if base_url == "" else f"/{base_url}/" + + def patch_index_html( index_path: str, base_href: str, @@ -22,31 +36,44 @@ def patch_index_html( with open(index_path, encoding="utf-8") as f: index = f.read() + base = _normalize_base(base_href) + if base_href: + index = index.replace('', f'') + app_config = [] if pyodide and pyodide_script_path: module_name = Path(pyodide_script_path).stem app_config.append("flet.pyodide = true;") app_config.append(f"flet.micropipIncludePre = {str(pyodide_pre).lower()};") - app_config.append(f'flet.pythonModuleName = "{module_name}";') + app_config.append(f"flet.pythonModuleName = {module_name!r};") - app_config.append(f"flet.noCdn={str(no_cdn).lower()};") - app_config.append(f'flet.webRenderer="{web_renderer.value}";') - app_config.append(f'flet.routeUrlStrategy="{route_url_strategy.value}";') + app_config.append(f"flet.noCdn = {str(no_cdn).lower()};") + app_config.append(f"flet.webRenderer = {web_renderer.value!r};") + app_config.append(f"flet.routeUrlStrategy = {route_url_strategy.value!r};") if websocket_endpoint_path: - app_config.append(f'flet.webSocketEndpoint="{websocket_endpoint_path}";') + app_config.append(f"flet.webSocketEndpoint={websocket_endpoint_path!r};") index = index.replace( "", "".format("\n".join(app_config)), ) - if base_href: - base_url = base_href.strip("/").strip() - index = index.replace( - '', - ''.format("/" if base_url == "" else f"/{base_url}/"), + # Update flet bootstrap object to respect base-url and routing options. + index = _replace_flet_value(index, "pyodide", str(pyodide).lower()) + index = _replace_flet_value(index, "noCdn", str(no_cdn).lower()) + index = _replace_flet_value(index, "webRenderer", f"{web_renderer.value!r}") + index = _replace_flet_value( + index, "routeUrlStrategy", f"{route_url_strategy.value!r}" + ) + index = _replace_flet_value(index, "entrypointBaseUrl", f"{base!r}") + index = _replace_flet_value(index, "assetBase", f"{base!r}") + index = _replace_flet_value(index, "canvasKitBaseUrl", f"'{base}canvaskit/'") + index = _replace_flet_value(index, "pyodideUrl", f"'{base}pyodide/pyodide.js'") + if websocket_endpoint_path: + index = _replace_flet_value( + index, "webSocketEndpoint", f"{websocket_endpoint_path!r}" ) if app_name: diff --git a/sdk/python/packages/flet-webview/src/flutter/flet_webview/pubspec.yaml b/sdk/python/packages/flet-webview/src/flutter/flet_webview/pubspec.yaml index 58ff2de61d..987360e197 100644 --- a/sdk/python/packages/flet-webview/src/flutter/flet_webview/pubspec.yaml +++ b/sdk/python/packages/flet-webview/src/flutter/flet_webview/pubspec.yaml @@ -4,8 +4,8 @@ version: 0.1.0 publish_to: none environment: - sdk: '>=3.2.3 <4.0.0' - flutter: ">=1.17.0" + sdk: ">=3.8.0 <4.0.0" + flutter: ">=3.32.0" dependencies: flutter: @@ -24,4 +24,4 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^3.0.0 + flutter_lints: ^6.0.0 diff --git a/sdk/python/packages/flet/docs/ads/index.md b/sdk/python/packages/flet/docs/ads/index.md index ac0ba1692a..721baa41fe 100644 --- a/sdk/python/packages/flet/docs/ads/index.md +++ b/sdk/python/packages/flet/docs/ads/index.md @@ -11,9 +11,9 @@ Based on the [google_mobile_ads](https://pub.dev/packages/google_mobile_ads) Flu ## Platform Support -| Platform | Windows | macOS | Linux | iOS | Android | Web | -|----------|---------|-------|-------|-----|---------|-----| -| Supported| ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | +| Platform | Windows | macOS | Linux | iOS | Android | Web | +|-----------|---------|-------|-------|-----|---------|-----| +| Supported | ❌ | ❌ | ❌ | ✅ | ✅ | ❌ | ## Usage @@ -39,7 +39,7 @@ pip install flet-ads # (1)! --8<-- "{{ examples }}/example_1.py" ``` -{{ image(example_images + "/example_1.gif", alt="example_1", width="80%") }} +{{ image(example_images + "/example_1.gif", width="80%") }} ## Packaging diff --git a/sdk/python/packages/flet/docs/apps/examples-gallery/README.md b/sdk/python/packages/flet/docs/apps/examples-gallery/README.md new file mode 100644 index 0000000000..8bfc31587f --- /dev/null +++ b/sdk/python/packages/flet/docs/apps/examples-gallery/README.md @@ -0,0 +1,3 @@ +# Examples Gallery + +Live demo of [examples](https://github.com/flet-dev/flet/tree/main/sdk/python/examples). diff --git a/sdk/python/packages/flet/docs/apps/examples-gallery/pyproject.toml b/sdk/python/packages/flet/docs/apps/examples-gallery/pyproject.toml new file mode 100644 index 0000000000..d27d30daad --- /dev/null +++ b/sdk/python/packages/flet/docs/apps/examples-gallery/pyproject.toml @@ -0,0 +1,43 @@ +[project] +name = "examples-gallery" +version = "0.1.0" +description = "Live demo of Flet examples." +readme = "README.md" +requires-python = ">=3.10" +authors = [{ name = "Appveyor Systems Inc.", email = "hello@flet.dev" }] +dependencies = [ + "flet>=0.70.0.dev0", + "flet-charts>=0.70.0.dev0", + "flet-ads>=0.70.0.dev0", + "flet-audio>=0.70.0.dev0", + "flet-audio-recorder>=0.70.0.dev0", + "flet-charts>=0.70.0.dev0", + "plotly[express]", + "pandas", + "flet-datatable2>=0.70.0.dev0", + "flet-flashlight>=0.70.0.dev0", + "flet-geolocator>=0.70.0.dev0", + "flet-lottie>=0.70.0.dev0", + "flet-map>=0.70.0.dev0", + "flet-permission-handler>=0.70.0.dev0", + "flet-rive>=0.70.0.dev0", + "flet-video>=0.70.0.dev0", + "flet-webview>=0.70.0.dev0", + "typing_extensions", +] + +[tool.uv] +prerelease = "allow" + +[tool.flet] +# Docs: https://flet.dev/docs/publish +product = "Examples Gallery" +company = "Flet" + +[tool.flet.app] +path = "src" + +[tool.flet.web] +base_url = "apps/examples-gallery/dist" +renderer = "auto" +route_url_strategy = "hash" diff --git a/sdk/python/packages/flet/docs/apps/examples-gallery/src/main.py b/sdk/python/packages/flet/docs/apps/examples-gallery/src/main.py new file mode 100644 index 0000000000..281309cdd4 --- /dev/null +++ b/sdk/python/packages/flet/docs/apps/examples-gallery/src/main.py @@ -0,0 +1,256 @@ +import importlib +import inspect +import sys +from collections.abc import Awaitable +from pathlib import Path +from typing import Callable, Union + +import flet as ft + +Runner = Callable[[ft.Page], Union[None, Awaitable[None]]] + + +def _resolve_examples_root() -> tuple[Path, Path, str]: + """ + Find examples/controls tree under sdk/python/examples. + + Falls back to the local controls folder if the repo path isn't available + (e.g., packaged artifacts or custom layouts). + """ + here = Path(__file__).resolve() + for parent in here.parents: + candidate = parent / "examples" / "controls" + if candidate.is_dir(): + return parent, candidate, "examples.controls" + + fallback_root = here.parent + return fallback_root, fallback_root / "controls", "controls" + + +PROJECT_PY_ROOT, EXAMPLES_ROOT, MODULE_PREFIX = _resolve_examples_root() +if str(PROJECT_PY_ROOT) not in sys.path: + sys.path.insert(0, str(PROJECT_PY_ROOT)) + + +def discover_examples(): + controls: dict[str, list[dict[str, object]]] = {} + for path in sorted(EXAMPLES_ROOT.rglob("*.py")): + # skip files/folders not supported on pyodide or otherwise excluded + non_pyodide = {"matplotlib_chart"} + exclude = ( + {"media", "ads"} | non_pyodide if sys.platform == "emscripten" else set() + ) + + if path.name.startswith("_") or any( + part.startswith("__") or part in exclude for part in path.parts + ): + continue + + rel = path.relative_to(EXAMPLES_ROOT).with_suffix("") + parts = rel.parts + if len(parts) < 2: + continue # expect control_name/file.py + + control_name = "".join(word.title() for word in parts[0].split("_")) + slug = "/".join(parts) + module_name = f"{MODULE_PREFIX}." + ".".join(parts) + + try: + mod = importlib.import_module(module_name) + except Exception as e: + print(f"Failed to import example module: {module_name}: {e}") + continue + + # get the main() function from the module + runner = getattr(mod, "main", None) + if runner is None: + continue + + controls.setdefault(control_name, []).append({"slug": slug, "runner": runner}) + + return controls + + +CONTROL_EXAMPLES = discover_examples() +EXAMPLES_BY_SLUG = { + ex["slug"]: ex for group in CONTROL_EXAMPLES.values() for ex in group +} + + +def pretty_example_title(slug: str) -> str: + parts = slug.split("/") + if not parts: + return slug + + def prettify(token: str) -> str: + return " ".join(word.title() for word in token.replace("_", " ").split()) + + rest = parts[1:] + if not rest: + return prettify(parts[0]) + + # Direct file under control: just show the file name. + if len(rest) == 1: + return prettify(rest[0]) + + # Subfolders: use the deepest group as the leading label. + groups, leaf = rest[:-1], rest[-1] + return f"{prettify(groups[-1])} / {prettify(leaf)}" + + +async def main(page: ft.Page): + page.title = "Flet Examples" + page.padding = 20 + page.theme_mode = ft.ThemeMode.LIGHT + page.horizontal_alignment = ft.CrossAxisAlignment.START + page.scroll = ft.ScrollMode.AUTO + search_ref: ft.Ref[ft.TextField] = ft.Ref() + + def open_example(slug: str): + page.run_task(page.push_route, route=f"/{slug}") + + def filter_controls(query: str) -> dict[str, list[dict[str, object]]]: + q = query.strip().lower() + if not q: + return CONTROL_EXAMPLES + filtered: dict[str, list[dict[str, object]]] = {} + for control_name, examples in CONTROL_EXAMPLES.items(): + matches = [] + for ex in examples: + slug_match = q in ex["slug"].lower() + title_match = q in pretty_example_title(ex["slug"]).lower() + if slug_match or title_match or q in control_name.lower(): + matches.append(ex) + if matches: + filtered[control_name] = matches + return filtered + + def render_home(): + page.appbar = ft.AppBar( + title=ft.Text("Flet examples", weight=ft.FontWeight.W_600), + center_title=False, + bgcolor=ft.Colors.SURFACE_CONTAINER_HIGHEST, + automatically_imply_leading=False, + ) + page.clean() + + grid_view = ft.GridView( + expand=1, + runs_count=0, + max_extent=420, + spacing=12, + run_spacing=12, + ) + + def update_controls(): + query = search_ref.current.value if search_ref.current else "" + visible_controls = filter_controls(query or "") + + control_cards = [] + for control_name, examples in visible_controls.items(): + control_cards.append( + ft.Card( + elevation=2, + content=ft.Container( + padding=12, + content=ft.Column( + spacing=8, + controls=[ + ft.Text( + value=control_name, + theme_style=ft.TextThemeStyle.TITLE_LARGE, + weight=ft.FontWeight.W_600, + ), + ft.ListView( + spacing=4, + expand=True, + scroll=ft.ScrollMode.AUTO, + controls=[ + ft.ListTile( + title=ft.Text( + value=pretty_example_title( + ex["slug"] + ), + weight=ft.FontWeight.W_600, + ), + subtitle=ft.Text(f"/{ex['slug']}"), + on_click=lambda e, + s=ex["slug"]: open_example(s), + trailing=ft.Icon( + ft.Icons.CHEVRON_RIGHT + ), + ) + for ex in examples + ], + ), + ], + ), + ), + ) + ) + + grid_view.controls = control_cards + grid_view.update() + + page.add( + ft.TextField( + ref=search_ref, + prefix_icon=ft.Icons.SEARCH, + hint_text="Search controls or examples", + on_change=lambda e: update_controls(), + dense=True, + ), + ft.Divider(), + ft.Text( + "Open examples via tile click or route (e.g. /checkbox/basic).", + theme_style=ft.TextThemeStyle.BODY_MEDIUM, + ), + ft.Divider(), + grid_view, + ) + update_controls() + + def reset_page(): + page.appbar = None + page.clean() + page.overlay.clear() + page.pop_dialog() + page.theme = page.dark_theme = page.floating_action_button = None + page.theme_mode = ft.ThemeMode.LIGHT + page.scroll = None + page.update() + + async def render_example(slug: str): + info = EXAMPLES_BY_SLUG.get(slug) + if not info: + await page.push_route("/") + return + + # Show only the example content. + reset_page() + + runner: Runner = info["runner"] + if inspect.iscoroutinefunction(runner): + await runner(page) + else: + runner(page) + page.update() + + async def handle_route_change(e: ft.RouteChangeEvent = None): + route = page.route.lstrip("/") + if route == "": + render_home() + elif route in EXAMPLES_BY_SLUG: + await render_example(route) + else: + await page.push_route("/") + + page.on_route_change = handle_route_change + await handle_route_change() + + +if __name__ == "__main__": + ft.run( + main, + # route_url_strategy=ft.RouteUrlStrategy.HASH, + ) diff --git a/sdk/python/packages/flet/docs/assets/cookbook/adaptive-apps/navigation-bar-cupertino.png b/sdk/python/packages/flet/docs/assets/cookbook/adaptive-apps/navigation-bar-cupertino.png new file mode 100644 index 0000000000..856dc4cf79 Binary files /dev/null and b/sdk/python/packages/flet/docs/assets/cookbook/adaptive-apps/navigation-bar-cupertino.png differ diff --git a/sdk/python/examples/controls/navigation_bar/media/adaptive.png b/sdk/python/packages/flet/docs/assets/cookbook/adaptive-apps/navigation-bar-material.png similarity index 100% rename from sdk/python/examples/controls/navigation_bar/media/adaptive.png rename to sdk/python/packages/flet/docs/assets/cookbook/adaptive-apps/navigation-bar-material.png diff --git a/sdk/python/packages/flet/docs/audio/index.md b/sdk/python/packages/flet/docs/audio/index.md index 26c480c827..b3e5e07c1e 100644 --- a/sdk/python/packages/flet/docs/audio/index.md +++ b/sdk/python/packages/flet/docs/audio/index.md @@ -9,9 +9,9 @@ Allows playing audio in [Flet](https://flet.dev) apps. ## Platform Support -| Platform | Windows | macOS | Linux | iOS | Android | Web | -|----------|---------|-------|-------|-----|---------|-----| -| Supported| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Platform | Windows | macOS | Linux | iOS | Android | Web | +|-----------|---------|-------|-------|-----|---------|-----| +| Supported | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ## Usage @@ -33,9 +33,7 @@ pip install flet-audio # (1)! ## Example -```python ---8<-- "{{ examples }}/example_1.py" -``` +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} /// admonition | Linux/WSL (Windows Subsystem for Linux) type: note diff --git a/sdk/python/packages/flet/docs/audio_recorder/index.md b/sdk/python/packages/flet/docs/audio_recorder/index.md index 3755780964..4e4b7ab9dc 100644 --- a/sdk/python/packages/flet/docs/audio_recorder/index.md +++ b/sdk/python/packages/flet/docs/audio_recorder/index.md @@ -9,9 +9,9 @@ Allows recording audio in [Flet](https://flet.dev) apps. ## Platform Support -| Platform | Windows | macOS | Linux | iOS | Android | Web | -|----------|---------|-------|-------|-----|---------|-----| -| Supported| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Platform | Windows | macOS | Linux | iOS | Android | Web | +|-----------|---------|-------|-------|-----|---------|-----| +| Supported | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ## Usage @@ -38,9 +38,7 @@ Audio encoding on Linux is provided by [fmedia](https://stsaz.github.io/fmedia/) ## Example -```python ---8<-- "{{ examples }}/example_1.py" -``` +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} ## Description diff --git a/sdk/python/packages/flet/docs/charts/bar_chart.md b/sdk/python/packages/flet/docs/charts/bar_chart.md index ebc71360cd..e9da1f3fb5 100644 --- a/sdk/python/packages/flet/docs/charts/bar_chart.md +++ b/sdk/python/packages/flet/docs/charts/bar_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.bar_chart.BarChart examples: ../../examples/controls/charts/bar_chart -example_images: ../examples/controls/charts/bar_chart/media diagram: assets/bar-chart-diagram.svg --- @@ -11,18 +10,11 @@ diagram: assets/bar-chart-diagram.svg ### Example 1 -```python ---8<-- "{{ examples }}/example_1.py" -``` - -{{ image(example_images + "/example_1.png", width="80%") }} +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} ### Example 2 -```python ---8<-- "{{ examples }}/example_2.py" -``` +{{ code_and_demo(examples + "/example_2.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_2.gif", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/candlestick_chart.md b/sdk/python/packages/flet/docs/charts/candlestick_chart.md index 0e0d7c3587..a88ac85c7c 100644 --- a/sdk/python/packages/flet/docs/charts/candlestick_chart.md +++ b/sdk/python/packages/flet/docs/charts/candlestick_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.candlestick_chart.CandlestickChart examples: ../../examples/controls/charts/candlestick_chart -example_images: ../examples/controls/charts/candlestick_chart/media --- {{ class_summary(class_name) }} @@ -10,10 +9,7 @@ example_images: ../examples/controls/charts/candlestick_chart/media ### Basic Candlestick Chart -```python ---8<-- "{{ examples }}/example_1.py" -``` +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_1.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/index.md b/sdk/python/packages/flet/docs/charts/index.md index 9505582b34..f6cf2cfc71 100644 --- a/sdk/python/packages/flet/docs/charts/index.md +++ b/sdk/python/packages/flet/docs/charts/index.md @@ -1,7 +1,3 @@ ---- -examples: ../../examples/controls/charts ---- - # Charts Interactive chart controls powered by [flet-charts](https://pypi.org/project/flet-charts/) let you display data as bar, line, pie, scatter and plotly visualisations directly in your Flet apps. @@ -10,9 +6,9 @@ It is built on top of the [fl_chart](https://pub.dev/packages/fl_chart) Flutter ## Platform Support -| Platform | Windows | macOS | Linux | iOS | Android | Web | -|----------|---------|-------|-------|-----|---------|-----| -| Supported| ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Platform | Windows | macOS | Linux | iOS | Android | Web | +|-----------|---------|-------|-------|-----|---------|-----| +| Supported | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ## Usage @@ -32,6 +28,45 @@ pip install flet-charts # (1)! 1. After this, you will have to manually add this package to your `requirements.txt` or `pyproject.toml`. /// +/// admonition | Extra Dependencies + type: tip +Some chart controls require additional dependencies to be installed: + +* [`MatplotlibChart`][flet_charts.MatplotlibChart]: [`matplotlib`](https://matplotlib.org/) +* [`PlotlyChart`][flet_charts.PlotlyChart]: [`plotly`](https://plotly.com/python/) **and** [`kaleido`](https://github.com/plotly/Kaleido) + +`flet-charts` provides extras to easily install these: + +/// tab | uv +```bash +uv add "flet-charts[all]" # (1)! +# or +uv add "flet-charts[plotly]" # (2)! +# or +uv add "flet-charts[matplotlib]" # (3)! +``` + +1. Additionally installs `matplotlib`, `plotly` and `kaleido`. +2. Additionally installs `plotly` and `kaleido`. +3. Additionally installs `matplotlib`. +/// +/// tab | pip +```bash +pip install "flet-charts[all]" # (1)! +# or +pip install "flet-charts[plotly]" # (2)! +# or +pip install "flet-charts[matplotlib]" # (3)! +``` + + 1. Additionally installs `matplotlib`, `plotly` and `kaleido`. + 2. Additionally installs `plotly` and `kaleido`. + 3. Additionally installs `matplotlib`. +/// + +/// + + ## Available Charts - [`BarChart`](bar_chart.md) diff --git a/sdk/python/packages/flet/docs/charts/line_chart.md b/sdk/python/packages/flet/docs/charts/line_chart.md index 639813ff0e..0d968d7220 100644 --- a/sdk/python/packages/flet/docs/charts/line_chart.md +++ b/sdk/python/packages/flet/docs/charts/line_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.line_chart.LineChart examples: ../../examples/controls/charts/line_chart -example_images: ../examples/controls/charts/line_chart/media diagram: assets/line-chart-diagram.svg --- @@ -11,18 +10,10 @@ diagram: assets/line-chart-diagram.svg ### Example 1 -```python ---8<-- "{{ examples }}/example_1.py" -``` - -{{ image(example_images + "/example_1.gif", width="80%") }} +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} ### Example 2 -```python ---8<-- "{{ examples }}/example_2.py" -``` - -{{ image(example_images + "/example_2.gif", width="80%") }} +{{ code_and_demo(examples + "/example_2.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/matplotlib_chart.md b/sdk/python/packages/flet/docs/charts/matplotlib_chart.md index f5e10f150c..72f317b3e6 100644 --- a/sdk/python/packages/flet/docs/charts/matplotlib_chart.md +++ b/sdk/python/packages/flet/docs/charts/matplotlib_chart.md @@ -46,10 +46,7 @@ Based on an official [Matplotlib example](https://matplotlib.org/stable/gallery/ ### Animated chart -```python ---8<-- "{{ examples }}/animate.py" -``` +{{ code_and_demo(examples + "/animate.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/animate.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/pie_chart.md b/sdk/python/packages/flet/docs/charts/pie_chart.md index 2f05455289..c97f46c795 100644 --- a/sdk/python/packages/flet/docs/charts/pie_chart.md +++ b/sdk/python/packages/flet/docs/charts/pie_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.pie_chart.PieChart examples: ../../examples/controls/charts/pie_chart -example_images: ../examples/controls/charts/pie_chart/media diagram: assets/pie-chart-diagram.svg --- @@ -11,26 +10,15 @@ diagram: assets/pie-chart-diagram.svg ### Example 1 -```python ---8<-- "{{ examples }}/example_1.py" -``` - -{{ image(example_images + "/example_1.gif", width="80%") }} +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} ### Example 2 -```python ---8<-- "{{ examples }}/example_2.py" -``` - -{{ image(example_images + "/example_2.gif", width="80%") }} +{{ code_and_demo(examples + "/example_2.py", demo_height="420", demo_width="100%") }} ### Example 3 -```python ---8<-- "{{ examples }}/example_3.py" -``` +{{ code_and_demo(examples + "/example_3.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_3.gif", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/plotly_chart.md b/sdk/python/packages/flet/docs/charts/plotly_chart.md index 0a9b983396..c3c2de34a1 100644 --- a/sdk/python/packages/flet/docs/charts/plotly_chart.md +++ b/sdk/python/packages/flet/docs/charts/plotly_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.plotly_chart.PlotlyChart examples: ../../examples/controls/charts/plotly_chart -example_images: ../examples/controls/charts/plotly_chart/media --- {{ class_summary(class_name) }} @@ -12,40 +11,25 @@ example_images: ../examples/controls/charts/plotly_chart/media Based on an official [Plotly example](https://plotly.com/python/line-charts). -```python ---8<-- "{{ examples }}/example_1.py" -``` - -{{ image(example_images + "/example_1.png", width="80%") }} +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} ### Example 2 -Based on an official [Plotly example](https://plotly.com/python/bar-charts). - -```python ---8<-- "{{ examples }}/example_2.py" -``` +Based on [this](https://plotly.com/python/bar-charts) official Plotly example. -{{ image(example_images + "/example_2.png", width="80%") }} +{{ code_and_demo(examples + "/example_2.py", demo_height="420", demo_width="100%") }} ### Example 3 -Based on an official [Plotly example](https://plotly.com/python/pie-charts). - -```python ---8<-- "{{ examples }}/example_3.py" -``` +Based on [this](https://plotly.com/python/pie-charts) official Plotly example. -{{ image(example_images + "/example_3.png", width="80%") }} +{{ code_and_demo(examples + "/example_3.py", demo_height="420", demo_width="100%") }} ### Example 4 -Based on an official [Plotly example](https://plotly.com/python/box-plots). +Based on [this](https://plotly.com/python/box-plots) official Plotly example. -```python ---8<-- "{{ examples }}/example_4.py" -``` +{{ code_and_demo(examples + "/example_4.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_4.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/radar_chart.md b/sdk/python/packages/flet/docs/charts/radar_chart.md index 359da53a87..d96c905762 100644 --- a/sdk/python/packages/flet/docs/charts/radar_chart.md +++ b/sdk/python/packages/flet/docs/charts/radar_chart.md @@ -1,7 +1,6 @@ --- class_name: flet_charts.radar_chart.RadarChart examples: ../../examples/controls/charts/radar_chart -example_images: ../examples/controls/charts/radar_chart/media --- {{ class_summary(class_name) }} @@ -10,10 +9,7 @@ example_images: ../examples/controls/charts/radar_chart/media ### Example 1 -```python ---8<-- "{{ examples }}/example_1.py" -``` +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_1.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/charts/scatter_chart.md b/sdk/python/packages/flet/docs/charts/scatter_chart.md index c9d9dac678..5666452692 100644 --- a/sdk/python/packages/flet/docs/charts/scatter_chart.md +++ b/sdk/python/packages/flet/docs/charts/scatter_chart.md @@ -10,10 +10,7 @@ example_images: ../examples/controls/charts/scatter_chart/media ### Basic Scatter Chart -```python ---8<-- "{{ examples }}/example_1.py" -``` +{{ code_and_demo(examples + "/example_1.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/example_1.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/alertdialog.md b/sdk/python/packages/flet/docs/controls/alertdialog.md index f911ec31cb..3c257bba1e 100644 --- a/sdk/python/packages/flet/docs/controls/alertdialog.md +++ b/sdk/python/packages/flet/docs/controls/alertdialog.md @@ -8,15 +8,9 @@ example_images: ../test-images/examples/material/golden/macos/alert_dialog ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/alertdialog) - ### Modal and non-modal dialogs -```python ---8<-- "{{ examples }}/modal_and_non_modal.py" -``` - -{{ image(example_images + "/alert_dialog_flow.gif", alt="Modal and non-modal dialogs", caption="Modal and non-modal dialogs",width="50%") }} +{{ code_and_demo(examples + "/modal_and_non_modal.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/animatedswitcher.md b/sdk/python/packages/flet/docs/controls/animatedswitcher.md index 44ee2ca039..7d2b90dd90 100644 --- a/sdk/python/packages/flet/docs/controls/animatedswitcher.md +++ b/sdk/python/packages/flet/docs/controls/animatedswitcher.md @@ -1,34 +1,23 @@ --- class_name: flet.AnimatedSwitcher examples: ../../examples/controls/animated_switcher -example_images: ../examples/controls/animated_switcher/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/animations/animated_switcher) - ### Animated switching between two containers with scale effect -```python ---8<-- "{{ examples }}/scale_effect.py" -``` - -{{ image(example_images + "/scale_effect.gif", alt="scale-effect", width="80%") }} - +{{ code_and_demo(examples + "/scale_effect.py", demo_height="420", demo_width="100%") }} ### Animate Image switch -```python ---8<-- "{{ examples }}/image_switch.py" -``` +{{ code_and_demo(examples + "/image_switch.py", demo_height="420", demo_width="100%") }} ### Animate Image switch buffered -```python ---8<-- "{{ examples }}/image_switch_buffered.py" -``` +{{ code_and_demo(examples + "/image_switch_buffered.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/appbar.md b/sdk/python/packages/flet/docs/controls/appbar.md index 205c076c7b..f68c8e347a 100644 --- a/sdk/python/packages/flet/docs/controls/appbar.md +++ b/sdk/python/packages/flet/docs/controls/appbar.md @@ -2,28 +2,19 @@ class_name: flet.AppBar examples: ../../examples/controls/app_bar example_images: ../test-images/examples/material/golden/macos/app_bar -example_media: ../examples/controls/app_bar/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic AppBar", image_width="100%") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/appbar) - ### Actions and Popup Menu -```python ---8<-- "{{ examples }}/actions_and_popup_menu.py" -``` - -{{ image(example_media + "/actions_and_popup_menu.gif", alt="actions-and-popup-menu", width="80%") }} - +{{ code_and_demo(examples + "/actions_and_popup_menu.py", demo_height="420", demo_width="100%") }} ### Theme and Material Mode Toggles -```python ---8<-- "{{ examples }}/theme_and_material_mode_toggles.py" -``` +{{ code_and_demo(examples + "/theme_and_material_mode_toggles.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/autocomplete.md b/sdk/python/packages/flet/docs/controls/autocomplete.md index 117b806fe0..e0fb0d61d8 100644 --- a/sdk/python/packages/flet/docs/controls/autocomplete.md +++ b/sdk/python/packages/flet/docs/controls/autocomplete.md @@ -1,20 +1,15 @@ --- class_name: flet.AutoComplete examples: ../../examples/controls/auto_complete -example_images: ../examples/controls/auto_complete/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/autocomplete) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/autofillgroup.md b/sdk/python/packages/flet/docs/controls/autofillgroup.md index bf62110a5f..33125e10af 100644 --- a/sdk/python/packages/flet/docs/controls/autofillgroup.md +++ b/sdk/python/packages/flet/docs/controls/autofillgroup.md @@ -1,22 +1,15 @@ --- class_name: flet.AutofillGroup examples: ../../examples/controls/autofill_group -example_images: ../examples/controls/autofill_group/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/autofillgroup) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/banner.md b/sdk/python/packages/flet/docs/controls/banner.md index 242aad0e43..6d89dd0e86 100644 --- a/sdk/python/packages/flet/docs/controls/banner.md +++ b/sdk/python/packages/flet/docs/controls/banner.md @@ -2,22 +2,15 @@ class_name: flet.Banner examples: ../../examples/controls/banner example_images: ../test-images/examples/material/golden/macos/banner -example_media: ../examples/controls/banner/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Banner") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/banner) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/bottomappbar.md b/sdk/python/packages/flet/docs/controls/bottomappbar.md index e2b500afe5..29e76f7133 100644 --- a/sdk/python/packages/flet/docs/controls/bottomappbar.md +++ b/sdk/python/packages/flet/docs/controls/bottomappbar.md @@ -8,22 +8,13 @@ example_images: ../test-images/examples/material/golden/macos/bottom_app_bar ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/bottomappbar) - ### Notched `FloatingActionButton` -```python ---8<-- "{{ examples }}/notched_fab.py" -``` - -{{ image(example_images + "/notched_fab.png", width="80%") }} +{{ code_and_demo(examples + "/notched_fab.py", demo_height="380", demo_width="100%") }} ### Custom border radius -```python ---8<-- "{{ examples }}/border_radius.py" -``` +{{ code_and_demo(examples + "/border_radius.py", demo_height="380", demo_width="100%") }} -{{ image(example_images + "/border_radius.png", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/bottomsheet.md b/sdk/python/packages/flet/docs/controls/bottomsheet.md index 53d4e5feb8..546b630ddc 100644 --- a/sdk/python/packages/flet/docs/controls/bottomsheet.md +++ b/sdk/python/packages/flet/docs/controls/bottomsheet.md @@ -8,23 +8,13 @@ example_images: ../test-images/examples/material/golden/macos/bottom_sheet ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/bottomsheet) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", width="60%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} ### Fullscreen -```python ---8<-- "{{ examples }}/fullscreen.py" -``` - -{{ image(example_images + "/fullscreen.gif", width="60%") }} +{{ code_and_demo(examples + "/fullscreen.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/button.md b/sdk/python/packages/flet/docs/controls/button.md index 181b9a35e7..b77e453195 100644 --- a/sdk/python/packages/flet/docs/controls/button.md +++ b/sdk/python/packages/flet/docs/controls/button.md @@ -8,75 +8,33 @@ example_images: ../test-images/examples/material/golden/macos/button ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/elevatedbutton) - ### Button -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="Basic button", width="50%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="280", demo_width="50%") }} ### Icons -```python ---8<-- "{{ examples }}/icons.py" -``` - -{{ image(example_images + "/icons.png", alt="Basic button", width="50%") }} - +{{ code_and_demo(examples + "/icons.py", demo_height="280", demo_width="50%") }} ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_images + "/handling_clicks.png", alt="Handling clicks", width="50%") }} - +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="280", demo_width="50%") }} ### Custom content -```python ---8<-- "{{ examples }}/custom_content.py" -``` - -{{ image(example_images + "/custom_content.png", alt="Buttons with custom content", width="50%") }} - +{{ code_and_demo(examples + "/custom_content.py", demo_height="280", demo_width="50%") }} ### Shapes -```python ---8<-- "{{ examples }}/button_shapes.py" -``` - -{{ image(example_images + "/button_shapes.png", alt="Buttons with different shapes", width="50%") }} - +{{ code_and_demo(examples + "/button_shapes.py", demo_height="400", demo_width="100%") }} ### Styling -```python ---8<-- "{{ examples }}/styling.py" -``` - -{{ image(example_images + "/styled_initial.png", alt="Styled button - default state", width="50%", caption="Default state") }} - - -{{ image(example_images + "/styled_hovered.png", alt="Styled button - hovered state", width="50%", caption="Hovered state") }} - +{{ code_and_demo(examples + "/styling.py", demo_height="280", demo_width="50%") }} ### Animate on hover -```python ---8<-- "{{ examples }}/animate_on_hover.py" -``` - -{{ image(example_images + "/animate_on_hover_initial.png", alt="Unhovered button", width="50%", caption="Normal button") }} - - -{{ image(example_images + "/animate_on_hover_hovered.png", alt="Hovered button", width="50%", caption="Hovered button") }} +{{ code_and_demo(examples + "/animate_on_hover.py", demo_height="280", demo_width="50%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/buttons/index.md b/sdk/python/packages/flet/docs/controls/buttons/index.md deleted file mode 100644 index 0517d2a392..0000000000 --- a/sdk/python/packages/flet/docs/controls/buttons/index.md +++ /dev/null @@ -1,116 +0,0 @@ -[Live example](https://flet-controls-gallery.fly.dev/buttons) - -
- -- [:octicons-arrow-right-24: `Button`][flet.Button] - - --- - ![Button](../../examples/controls/button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `CupertinoActionSheetAction`][flet.CupertinoActionSheetAction] - - --- - - -- [:octicons-arrow-right-24: `CupertinoButton`][flet.CupertinoButton] - - --- - ![CupertinoButton](../../examples/controls/cupertino_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `CupertinoContextMenuAction`][flet.CupertinoContextMenuAction] - - --- - - -- [:octicons-arrow-right-24: `CupertinoDialogAction`][flet.CupertinoDialogAction] - - --- - - -- [:octicons-arrow-right-24: `CupertinoFilledButton`][flet.CupertinoFilledButton] - - --- - ![CupertinoFilledButton](../../examples/controls/cupertino_filled_button/media/basic.png){width="100%"} - -- [:octicons-arrow-right-24: `CupertinoSegmentedButton`][flet.CupertinoSegmentedButton] - - --- - ![CupertinoSegmentedButton](../../examples/controls/cupertino_segmented_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `CupertinoSlidingSegmentedButton`][flet.CupertinoSlidingSegmentedButton] - - --- - - -- [:octicons-arrow-right-24: `CupertinoTintedButton`][flet.CupertinoTintedButton] - - --- - - -- [:octicons-arrow-right-24: `Button`][flet.Button] - - --- - ![Button](../../examples/controls/button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `FilledButton`][flet.FilledButton] - - --- - ![FilledButton](../../examples/controls/filled_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `FilledTonalButton`][flet.FilledTonalButton] - - --- - ![FilledTonalButton](../../examples/controls/filled_tonal_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `FloatingActionButton`][flet.FloatingActionButton] - - --- - ![FloatingActionButton](../../examples/controls/floating_action_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `IconButton`][flet.IconButton] - - --- - ![IconButton](../../examples/controls/icon_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `MenuItemButton`][flet.MenuItemButton] - - --- - - -- [:octicons-arrow-right-24: `OutlinedButton`][flet.OutlinedButton] - - --- - ![OutlinedButton](../../examples/controls/outlined_button/media/index.png){width="100%"} - -- [:octicons-arrow-right-24: `PopupMenuButton`][flet.PopupMenuButton] - - --- - ![PopupMenuButton](../../examples/controls/popup_menu_button/media/index.gif){width="100%"} - -- [:octicons-arrow-right-24: `SegmentedButton`][flet.SegmentedButton] - - --- - - -- [:octicons-arrow-right-24: `SubmenuButton`][flet.SubmenuButton] - - --- - - -- [:octicons-arrow-right-24: `FilledIconButton`][flet.FilledIconButton] - - --- - - -- [:octicons-arrow-right-24: `FilledTonalIconButton`][flet.FilledTonalIconButton] - - --- - - -- [:octicons-arrow-right-24: `OutlinedIconButton`][flet.OutlinedIconButton] - - --- - - - -
diff --git a/sdk/python/packages/flet/docs/controls/canvas/index.md b/sdk/python/packages/flet/docs/controls/canvas/index.md index cb5ce993a1..0490ede695 100644 --- a/sdk/python/packages/flet/docs/controls/canvas/index.md +++ b/sdk/python/packages/flet/docs/controls/canvas/index.md @@ -2,7 +2,6 @@ class_name: flet.canvas.Canvas examples: ../../examples/controls/canvas example_images: ../../test-images/examples/core/golden/macos/canvas -example_media: ../../examples/controls/canvas/media --- # Canvas @@ -11,63 +10,33 @@ example_media: ../../examples/controls/canvas/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/canvas) - ### Smiling face -```python ---8<-- "{{ examples }}/smiling_face.py" -``` - -{{ image(example_media + "/smiling_face.png", alt="smiling-face", width="80%") }} - +{{ code_and_demo(examples + "/smiling_face.py", demo_height="420", demo_width="100%") }} ### Flet logo -```python ---8<-- "{{ examples }}/flet_logo.py" -``` - -{{ image(example_media + "/flet_logo.png", alt="flet-logo", width="80%") }} - +{{ code_and_demo(examples + "/flet_logo.py", demo_height="420", demo_width="100%") }} ### Triangles -```python ---8<-- "{{ examples }}/triangles.py" -``` - -{{ image(example_media + "/triangles.png", alt="triangles", width="80%") }} - +{{ code_and_demo(examples + "/triangles.py", demo_height="420", demo_width="100%") }} ### Bezier curves -```python ---8<-- "{{ examples }}/bezier_curves.py" -``` - -{{ image(example_media + "/bezier_curves.png", alt="bezier-curves", width="80%") }} - +{{ code_and_demo(examples + "/bezier_curves.py", demo_height="420", demo_width="100%") }} ### Text -```python ---8<-- "{{ examples }}/text.py" -``` - -{{ image(example_media + "/text.png", alt="text", width="80%") }} - +{{ code_and_demo(examples + "/text.py", demo_height="510", demo_width="100%") }} ### Free-hand drawing with image capture -```python ---8<-- "{{ examples }}/brush.py" -``` +{{ code_and_demo(examples + "/brush.py", demo_height="420", demo_width="100%") }} ### Gradients -```python ---8<-- "{{ examples }}/gradients.py" -``` +{{ code_and_demo(examples + "/gradients.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/card.md b/sdk/python/packages/flet/docs/controls/card.md index bfa5caad0a..86fbc79df8 100644 --- a/sdk/python/packages/flet/docs/controls/card.md +++ b/sdk/python/packages/flet/docs/controls/card.md @@ -8,13 +8,9 @@ example_images: ../test-images/examples/material/golden/macos/card ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/card) +### Music card -```python ---8<-- "{{ examples }}/music_info.py" -``` - -{{ image(example_images + "/music_info.png", alt="music-info", width="50%") }} +{{ code_and_demo(examples + "/music_info.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/checkbox.md b/sdk/python/packages/flet/docs/controls/checkbox.md index 401d0eaea2..17f0a42a58 100644 --- a/sdk/python/packages/flet/docs/controls/checkbox.md +++ b/sdk/python/packages/flet/docs/controls/checkbox.md @@ -8,32 +8,17 @@ example_images: ../test-images/examples/material/golden/macos/checkbox ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/checkbox) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="50%", caption="After clicking Submit") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` - -{{ image(example_images + "/handling_events.png", alt="handling-events", width="50%", caption="After three clicks") }} - +{{ code_and_demo(examples + "/handling_events.py", demo_height="380", demo_width="100%") }} ### Styled checkboxes -```python ---8<-- "{{ examples }}/styled.py" -``` +{{ code_and_demo(examples + "/styled.py", demo_height="200", demo_width="100%") }} -{{ image(example_images + "/styled_checkboxes.png", alt="Styled checkboxes", width="50%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/chip.md b/sdk/python/packages/flet/docs/controls/chip.md index 60542b577e..cdaccb4129 100644 --- a/sdk/python/packages/flet/docs/controls/chip.md +++ b/sdk/python/packages/flet/docs/controls/chip.md @@ -2,29 +2,20 @@ class_name: flet.Chip examples: ../../examples/controls/chip example_images: ../test-images/examples/material/golden/macos/chip -example_media: ../examples/controls/chip/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Chip") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/chip) - ### Assist chips Assist chips are chips with [`leading`][flet.Chip.leading] icon and [`on_click`][flet.Chip.on_click] event specified. - They represent smart or automated actions that appear dynamically and contextually in a UI. -An alternative to assist chips are [buttons](buttons/index.md), which should appear persistently and consistently. - -```python ---8<-- "{{ examples }}/assist_chips.py" -``` - -{{ image(example_media + "/assist_chips.png", alt="assist-chips", width="80%") }} +An alternative to assist chips are buttons, which should appear persistently and consistently. +{{ code_and_demo(examples + "/assist_chips.py", demo_height="190", demo_width="100%") }} ### Filter chips @@ -33,11 +24,7 @@ Filter chips are chips with [`on_select`][flet.Chip.on_select] event specified. They use tags or descriptive words provided in the [`label`][flet.Chip.label] to filter content. They can be a good alternative to switches or checkboxes. -```python ---8<-- "{{ examples }}/filter_chips.py" -``` - -{{ image(example_media + "/filter_chips.png", alt="filter-chips", width="80%") }} +{{ code_and_demo(examples + "/filter_chips.py", demo_height="190", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/circleavatar.md b/sdk/python/packages/flet/docs/controls/circleavatar.md index 3578e912e8..c722ac4a67 100644 --- a/sdk/python/packages/flet/docs/controls/circleavatar.md +++ b/sdk/python/packages/flet/docs/controls/circleavatar.md @@ -2,22 +2,14 @@ class_name: flet.CircleAvatar examples: ../../examples/controls/circle_avatar example_images: ../test-images/examples/material/golden/macos/circle_avatar -example_media: ../examples/controls/circle_avatar/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CircleAvatar") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/circleavatar) - ### User avatars -```python ---8<-- "{{ examples }}/user_avatars.py" -``` - -{{ image(example_media + "/user_avatars.png", alt="user-avatars", width="80%") }} - +{{ code_and_demo(examples + "/user_avatars.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/column.md b/sdk/python/packages/flet/docs/controls/column.md index bc0b3523a1..0805bbb694 100644 --- a/sdk/python/packages/flet/docs/controls/column.md +++ b/sdk/python/packages/flet/docs/controls/column.md @@ -2,69 +2,40 @@ class_name: flet.Column examples: ../../examples/controls/column example_images: ../test-images/examples/core/golden/macos/column -example_media: ../examples/controls/column/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Column with Text controls") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/column) - ### Column `spacing` -```python ---8<-- "{{ examples }}/spacing.py" -``` - -{{ image(example_media + "/spacing.gif", alt="spacing", width="80%") }} - +{{ code_and_demo(examples + "/spacing.py", demo_height="420", demo_width="100%") }} ### Column wrapping -```python ---8<-- "{{ examples }}/wrap.py" -``` - -{{ image(example_media + "/wrap.gif", alt="wrap", width="80%") }} - +{{ code_and_demo(examples + "/wrap.py", demo_height="420", demo_width="100%") }} ### Column vertical alignments -```python ---8<-- "{{ examples }}/alignment.py" -``` - -{{ image(example_media + "/alignment.png", alt="alignment", width="80%") }} - +{{ code_and_demo(examples + "/alignment.py", demo_height="420", demo_width="100%") }} ### Column horizontal alignments -```python ---8<-- "{{ examples }}/horizontal_alignment.py" -``` - -{{ image(example_media + "/horizontal_alignment.png", alt="horizontal-alignment", width="80%") }} - +{{ code_and_demo(examples + "/horizontal_alignment.py", demo_height="420", demo_width="100%") }} ### Infinite scrolling This example demonstrates adding of list items on-the-fly, as user scroll to the bottom, creating the illusion of infinite list: -```python ---8<-- "{{ examples }}/infinite_scrolling.py" -``` +{{ code_and_demo(examples + "/infinite_scrolling.py", demo_height="420", demo_width="100%") }} ### Scrolling programmatically This example shows how to use [`scroll_to()`][flet.Column.scroll_to] to programmatically scroll a column: -```python ---8<-- "{{ examples }}/programmatic_scroll.py" -``` - -{{ image(example_media + "/programmatic_scroll.png", alt="programmatic-scroll", width="80%") }} +{{ code_and_demo(examples + "/programmatic_scroll.py", demo_height="420", demo_width="100%") }} [//]: # (### Custom scrollbar) diff --git a/sdk/python/packages/flet/docs/controls/container.md b/sdk/python/packages/flet/docs/controls/container.md index 5b58b465f8..fcadb1f070 100644 --- a/sdk/python/packages/flet/docs/controls/container.md +++ b/sdk/python/packages/flet/docs/controls/container.md @@ -1,103 +1,60 @@ --- class_name: flet.Container examples: ../../examples/controls/container -example_images: ../examples/controls/container/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/container) - ### Clickable container -```python ---8<-- "{{ examples }}/clickable.py" -``` - -{{ image(example_images + "/clickable.gif", alt="clickable", width="80%") }} - +{{ code_and_demo(examples + "/clickable.py", demo_height="420", demo_width="100%") }} ### Background color -```python ---8<-- "{{ examples }}/background_color.py" -``` - -{{ image(example_images + "/background_color.png", alt="background-color", width="80%") }} - +{{ code_and_demo(examples + "/background_color.py", demo_height="420", demo_width="100%") }} ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_images + "/handling_clicks.gif", alt="handling-clicks", width="80%") }} +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="420", demo_width="100%") }} ### Handling hovers -```python ---8<-- "{{ examples }}/handling_hovers.py" -``` - -{{ image(example_images + "/handling_hovers.gif", alt="handling-hovers", width="80%") }} - +{{ code_and_demo(examples + "/handling_hovers.py", demo_height="420", demo_width="100%") }} ### Animate 1 -```python ---8<-- "{{ examples }}/animate_1.py" -``` - -{{ image(example_images + "/animate_1.gif", alt="animate-1", width="80%") }} - +{{ code_and_demo(examples + "/animate_1.py", demo_height="420", demo_width="100%") }} ### Animate 2 -```python ---8<-- "{{ examples }}/animate_2.py" -``` +{{ code_and_demo(examples + "/animate_2.py", demo_height="420", demo_width="100%") }} ### Animate 3 -```python ---8<-- "{{ examples }}/animate_3.py" -``` +{{ code_and_demo(examples + "/animate_3.py", demo_height="420", demo_width="100%") }} ### Animate 4 -```python ---8<-- "{{ examples }}/animate_4.py" -``` +{{ code_and_demo(examples + "/animate_4.py", demo_height="420", demo_width="100%") }} ### Nested themes 1 -```python ---8<-- "{{ examples }}/nested_themes_1.py" -``` +{{ code_and_demo(examples + "/nested_themes_1.py", demo_height="420", demo_width="100%") }} ### Nested themes 2 -```python ---8<-- "{{ examples }}/nested_themes_2.py" -``` +{{ code_and_demo(examples + "/nested_themes_2.py", demo_height="420", demo_width="100%") }} ### Nested themes 3 -```python ---8<-- "{{ examples }}/nested_themes_3.py" -``` - -{{ image(example_images + "/nested_themes_3.gif", alt="nested-themes-3", width="80%") }} - +{{ code_and_demo(examples + "/nested_themes_3.py", demo_height="420", demo_width="100%") }} ### Size aware -```python ---8<-- "{{ examples }}/size_aware.py" -``` +{{ code_and_demo(examples + "/size_aware.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/contextmenu.md b/sdk/python/packages/flet/docs/controls/contextmenu.md index 9b86b016b7..0dc1180e4f 100644 --- a/sdk/python/packages/flet/docs/controls/contextmenu.md +++ b/sdk/python/packages/flet/docs/controls/contextmenu.md @@ -10,22 +10,15 @@ example_images: ../test-images/examples/material/golden/macos/context_menu ### Triggers -```python ---8<-- "{{ examples }}/triggers.py" -``` +{{ code_and_demo(examples + "/triggers.py", demo_height="360", demo_width="100%") }} ## Programmatic open -```python ---8<-- "{{ examples }}/programmatic_open.py" -``` - -{{ image(example_images + "/programmatic_open.png", width="80%") }} +{{ code_and_demo(examples + "/programmatic_open.py", demo_height="360", demo_width="100%") }} ## Programmatic open with custom trigger -```python ---8<-- "{{ examples }}/custom_trigger.py" -``` +{{ code_and_demo(examples + "/custom_trigger.py", demo_height="360", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoactionsheet/index.md b/sdk/python/packages/flet/docs/controls/cupertinoactionsheet/index.md index 8381af463e..e820655566 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoactionsheet/index.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoactionsheet/index.md @@ -2,7 +2,6 @@ class_name: flet.CupertinoActionSheet examples: ../../examples/controls/cupertino_action_sheet example_images: ../../test-images/examples/cupertino/golden/macos/cupertino_action_sheet -example_media: ../../examples/controls/cupertino_action_sheet/media --- # CupertinoActionSheet @@ -11,15 +10,9 @@ example_media: ../../examples/controls/cupertino_action_sheet/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinoactionsheet) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoactivityindicator.md b/sdk/python/packages/flet/docs/controls/cupertinoactivityindicator.md index fe223956bd..705d64e3bf 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoactivityindicator.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoactivityindicator.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoActivityIndicator examples: ../../examples/controls/cupertino_activity_indicator example_images: ../test-images/examples/cupertino/golden/macos/cupertino_activity_indicator -example_media: ../examples/controls/cupertino_activity_indicator/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoActivityIndicator") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/cupertinoactivityindicator) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="320", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoalertdialog.md b/sdk/python/packages/flet/docs/controls/cupertinoalertdialog.md index e0787a7e7e..0616344e65 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoalertdialog.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoalertdialog.md @@ -1,28 +1,19 @@ --- class_name: flet.CupertinoAlertDialog examples: ../../examples/controls/cupertino_alert_dialog -example_images: ../examples/controls/cupertino_alert_dialog/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinoalertdialog) - ### File deletion confirmation -```python ---8<-- "{{ examples }}/file_deletion_confirmation.py" -``` - -{{ image(example_images + "/file_deletion_confirmation.png", alt="file-deletion-confirmation", width="80%") }} - +{{ code_and_demo(examples + "/file_deletion_confirmation.py", demo_height="380", demo_width="100%") }} ### Cupertino, material and adaptive alert dialogs -```python ---8<-- "{{ examples }}/cupertino_material_and_adaptive.py" -``` +{{ code_and_demo(examples + "/cupertino_material_and_adaptive.py", demo_height="380", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoappbar.md b/sdk/python/packages/flet/docs/controls/cupertinoappbar.md index 55f6c671af..0fca685819 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoappbar.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoappbar.md @@ -1,28 +1,19 @@ --- class_name: flet.CupertinoAppBar examples: ../../examples/controls/cupertino_app_bar -example_images: ../examples/controls/cupertino_app_bar/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/cupertinoappbar) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="360", demo_width="100%") }} ### App bar with theme mode toggle -```python ---8<-- "{{ examples }}/theme_mode_toggle.py" -``` +{{ code_and_demo(examples + "/theme_mode_toggle.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinobottomsheet.md b/sdk/python/packages/flet/docs/controls/cupertinobottomsheet.md index 4b9d7688c7..d377add75a 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinobottomsheet.md +++ b/sdk/python/packages/flet/docs/controls/cupertinobottomsheet.md @@ -1,22 +1,15 @@ --- class_name: flet.CupertinoBottomSheet examples: ../../examples/controls/cupertino_action_sheet -example_images: ../examples/controls/cupertino_action_sheet/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinobottomsheet) - ### Displaying a `CupertinoActionSheet` -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="cupertinoactionsheet", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinobutton.md b/sdk/python/packages/flet/docs/controls/cupertinobutton.md index 77e0626954..b6f0769056 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinobutton.md +++ b/sdk/python/packages/flet/docs/controls/cupertinobutton.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoButton examples: ../../examples/controls/cupertino_button example_images: ../test-images/examples/cupertino/golden/macos/cupertino_button -example_media: ../examples/controls/cupertino_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/cupertinobutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="340", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinocheckbox.md b/sdk/python/packages/flet/docs/controls/cupertinocheckbox.md index bfaa1cf744..e7049f56aa 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinocheckbox.md +++ b/sdk/python/packages/flet/docs/controls/cupertinocheckbox.md @@ -2,28 +2,20 @@ class_name: flet.CupertinoCheckbox examples: ../../examples/controls/cupertino_checkbox example_images: ../test-images/examples/cupertino/golden/macos/cupertino_checkbox -example_media: ../examples/controls/cupertino_checkbox/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoCheckboxes") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/cupertinocheckbox) - ### Cupertino, Material and Adaptive Checkboxes -```python ---8<-- "{{ examples }}/cupertino_material_and_adaptive.py" -``` - -{{ image(example_media + "/cupertino_material_and_adaptive.png", alt="cupertino-material-and-adaptive", width="80%") }} +{{ code_and_demo(examples + "/cupertino_material_and_adaptive.py", demo_height="360", demo_width="100%") }} ### Styled checkboxes -```python ---8<-- "{{ examples }}/styled.py" -``` +{{ code_and_demo(examples + "/styled.py", demo_height="360", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinocontextmenu/index.md b/sdk/python/packages/flet/docs/controls/cupertinocontextmenu/index.md index 52f1ecf94a..b88b52c7f8 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinocontextmenu/index.md +++ b/sdk/python/packages/flet/docs/controls/cupertinocontextmenu/index.md @@ -1,7 +1,6 @@ --- class_name: flet.CupertinoContextMenu examples: ../../examples/controls/cupertino_context_menu -example_images: ../../examples/controls/cupertino_context_menu/media --- # CupertinoContextMenu @@ -10,15 +9,9 @@ example_images: ../../examples/controls/cupertino_context_menu/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinocontextmenu) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinodatepicker.md b/sdk/python/packages/flet/docs/controls/cupertinodatepicker.md index 55c770a045..463ee64782 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinodatepicker.md +++ b/sdk/python/packages/flet/docs/controls/cupertinodatepicker.md @@ -1,22 +1,15 @@ --- class_name: flet.CupertinoDatePicker examples: ../../examples/controls/cupertino_date_picker -example_images: ../examples/controls/cupertino_date_picker/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinodatepicker) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinofilledbutton.md b/sdk/python/packages/flet/docs/controls/cupertinofilledbutton.md index dd359b4378..5abb25ae7b 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinofilledbutton.md +++ b/sdk/python/packages/flet/docs/controls/cupertinofilledbutton.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoFilledButton examples: ../../examples/controls/cupertino_filled_button example_images: ../test-images/examples/cupertino/golden/macos/cupertino_filled_button -example_media: ../examples/controls/cupertino_filled_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoFilledButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/cupertinofilledbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="340", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinolisttile.md b/sdk/python/packages/flet/docs/controls/cupertinolisttile.md index 05e50dae56..7d3f3547e9 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinolisttile.md +++ b/sdk/python/packages/flet/docs/controls/cupertinolisttile.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoListTile examples: ../../examples/controls/cupertino_list_tile example_images: ../test-images/examples/cupertino/golden/macos/cupertino_list_tile -example_media: ../examples/controls/cupertino_list_tile/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoListTile") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/cupertinolisttile) - ### Notched and non-notched list tiles -```python ---8<-- "{{ examples }}/notched.py" -``` - -{{ image(example_media + "/notched.png", alt="notched", width="80%") }} +{{ code_and_demo(examples + "/notched.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinonavigationbar.md b/sdk/python/packages/flet/docs/controls/cupertinonavigationbar.md index 50fc6eec46..4fba84d579 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinonavigationbar.md +++ b/sdk/python/packages/flet/docs/controls/cupertinonavigationbar.md @@ -1,28 +1,19 @@ --- class_name: flet.CupertinoNavigationBar examples: ../../examples/controls/cupertino_navigation_bar -example_images: ../examples/controls/cupertino_navigation_bar/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/cupertinonavigationbar) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="360", demo_width="100%") }} ### Wired navigation bar -```python ---8<-- "{{ examples }}/wired.py" -``` +{{ code_and_demo(examples + "/wired.py", demo_height="360", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinopicker.md b/sdk/python/packages/flet/docs/controls/cupertinopicker.md index 4a1fbcccb2..7630201e06 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinopicker.md +++ b/sdk/python/packages/flet/docs/controls/cupertinopicker.md @@ -1,22 +1,15 @@ --- class_name: flet.CupertinoPicker examples: ../../examples/controls/cupertino_picker -example_images: ../examples/controls/cupertino_picker/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinotimerpicker) - ### Fruit selection -```python ---8<-- "{{ examples }}/fruit_selection.py" -``` - -{{ image(example_images + "/fruit_selection.gif", alt="fruit-selection", width="80%") }} +{{ code_and_demo(examples + "/fruit_selection.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoradio.md b/sdk/python/packages/flet/docs/controls/cupertinoradio.md index 0ae14770b6..5de533a351 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoradio.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoradio.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoRadio examples: ../../examples/controls/cupertino_radio example_images: ../test-images/examples/cupertino/golden/macos/cupertino_radio -example_media: ../examples/controls/cupertino_radio/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoRadios") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/cupertinoradio) - ### Cupertino, Material and Adaptive Radios -```python ---8<-- "{{ examples }}/cupertino_material_and_adaptive.py" -``` - -{{ image(example_media + "/cupertino_material_and_adaptive.png", alt="cupertino-material-and-adaptive", width="80%") }} +{{ code_and_demo(examples + "/cupertino_material_and_adaptive.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinosegmentedbutton.md b/sdk/python/packages/flet/docs/controls/cupertinosegmentedbutton.md index 04336b8bd0..18271ce08e 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinosegmentedbutton.md +++ b/sdk/python/packages/flet/docs/controls/cupertinosegmentedbutton.md @@ -2,28 +2,19 @@ class_name: flet.CupertinoSegmentedButton examples: ../../examples/controls/cupertino_segmented_button example_images: ../test-images/examples/cupertino/golden/macos/cupertino_segmented_button -example_media: ../examples/controls/cupertino_segmented_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoSegmentedButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/cupertinosegmentedbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="360", demo_width="100%") }} ### Adjusting segments padding -```python ---8<-- "{{ examples }}/segments_padding.py" -``` +{{ code_and_demo(examples + "/segments_padding.py", demo_height="360", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoslider.md b/sdk/python/packages/flet/docs/controls/cupertinoslider.md index b02d01f95e..729f4b8f9c 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoslider.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoslider.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoSlider examples: ../../examples/controls/cupertino_slider example_images: ../test-images/examples/cupertino/golden/macos/cupertino_slider -example_media: ../examples/controls/cupertino_slider/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoSlider") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/cupertinoslider) - ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` - -{{ image(example_media + "/handling_events.gif", alt="handling-events", width="80%") }} +{{ code_and_demo(examples + "/handling_events.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoslidingsegmentedbutton.md b/sdk/python/packages/flet/docs/controls/cupertinoslidingsegmentedbutton.md index f704395654..e9fac85744 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoslidingsegmentedbutton.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoslidingsegmentedbutton.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoSlidingSegmentedButton examples: ../../examples/controls/cupertino_sliding_segmented_button example_images: ../test-images/examples/cupertino/golden/macos/cupertino_sliding_segmented_button -example_media: ../examples/controls/cupertino_sliding_segmented_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoSlidingSegmentedButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/cupertinoslidingsegmentedbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinoswitch.md b/sdk/python/packages/flet/docs/controls/cupertinoswitch.md index 166e83016d..6c9227c8e6 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinoswitch.md +++ b/sdk/python/packages/flet/docs/controls/cupertinoswitch.md @@ -2,22 +2,15 @@ class_name: flet.CupertinoSwitch examples: ../../examples/controls/cupertino_switch example_images: ../test-images/examples/cupertino/golden/macos/cupertino_switch -example_media: ../examples/controls/cupertino_switch/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoSwitch") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/cupertinoswitch) - ### Cupertino, Material and Adaptive Switches -```python ---8<-- "{{ examples }}/cupertino_material_and_adaptive.py" -``` - -{{ image(example_media + "/cupertino_material_and_adaptive.gif", alt="cupertino-material-and-adaptive", width="80%") }} +{{ code_and_demo(examples + "/cupertino_material_and_adaptive.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinotextfield.md b/sdk/python/packages/flet/docs/controls/cupertinotextfield.md index 47519e59ac..8620e7b2f6 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinotextfield.md +++ b/sdk/python/packages/flet/docs/controls/cupertinotextfield.md @@ -2,33 +2,23 @@ class_name: flet.CupertinoTextField examples: ../../examples/controls/cupertino_text_field example_images: ../test-images/examples/cupertino/golden/macos/cupertino_textfield -example_media: ../examples/controls/cupertino_text_field/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic CupertinoTextField") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/cupertinotextfield) - ### Basic Example -```python ---8<-- "{{ examples }}/cupertino_material_and_adaptive.py" -``` - -{{ image(example_media + "/cupertino_material_and_adaptive.png", alt="cupertino-material-and-adaptive", width="80%") }} +{{ code_and_demo(examples + "/cupertino_material_and_adaptive.py", demo_height="420", demo_width="100%") }} ### Handling selection changes -```python ---8<-- "{{ examples }}/selection_change.py" -``` +{{ code_and_demo(examples + "/selection_change.py", demo_height="420", demo_width="100%") }} ### Background image -```python ---8<-- "{{ examples }}/background_image.py" -``` +{{ code_and_demo(examples + "/background_image.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/cupertinotimerpicker.md b/sdk/python/packages/flet/docs/controls/cupertinotimerpicker.md index 93caf951c6..5596ea5a0f 100644 --- a/sdk/python/packages/flet/docs/controls/cupertinotimerpicker.md +++ b/sdk/python/packages/flet/docs/controls/cupertinotimerpicker.md @@ -1,22 +1,15 @@ --- class_name: flet.CupertinoTimerPicker examples: ../../examples/controls/cupertino_timer_picker -example_images: ../examples/controls/cupertino_timer_picker/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/cupertinotimerpicker) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/datatable/index.md b/sdk/python/packages/flet/docs/controls/datatable/index.md index ae5a083073..1f337c8aaa 100644 --- a/sdk/python/packages/flet/docs/controls/datatable/index.md +++ b/sdk/python/packages/flet/docs/controls/datatable/index.md @@ -2,39 +2,24 @@ class_name: flet.DataTable examples: ../../examples/controls/data_table example_images: ../../test-images/examples/material/golden/macos/datatable -example_media: ../../examples/controls/data_table/media --- -# DataTable - {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic DataTable") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/datatable) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Sortable columns and selectable rows -```python ---8<-- "{{ examples }}/sortable_and_selectable.py" -``` - -{{ image(example_media + "/sortable_and_selectable.png", alt="sortable-and-selectable", width="80%") }} - +{{ code_and_demo(examples + "/sortable_and_selectable.py", demo_height="420", demo_width="100%") }} ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` +{{ code_and_demo(examples + "/handling_events.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/datepicker.md b/sdk/python/packages/flet/docs/controls/datepicker.md index f07c9a9942..c5abfdcde7 100644 --- a/sdk/python/packages/flet/docs/controls/datepicker.md +++ b/sdk/python/packages/flet/docs/controls/datepicker.md @@ -1,22 +1,15 @@ --- class_name: flet.DatePicker examples: ../../examples/controls/date_picker -example_images: ../examples/controls/date_picker/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/datepicker) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/daterangepicker.md b/sdk/python/packages/flet/docs/controls/daterangepicker.md index ee818c04d2..fea6304715 100644 --- a/sdk/python/packages/flet/docs/controls/daterangepicker.md +++ b/sdk/python/packages/flet/docs/controls/daterangepicker.md @@ -8,15 +8,9 @@ example_images: ../test-images/controls/material/golden/macos/date_range_picker ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/daterangepicker) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="60%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="380", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/dismissible.md b/sdk/python/packages/flet/docs/controls/dismissible.md index 4fd4d88576..94661627bd 100644 --- a/sdk/python/packages/flet/docs/controls/dismissible.md +++ b/sdk/python/packages/flet/docs/controls/dismissible.md @@ -1,22 +1,15 @@ --- class_name: flet.Dismissible examples: ../../examples/controls/dismissible -example_images: ../examples/controls/dismissible/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/dismissible) - ### Dismissible `ListTile`s -```python ---8<-- "{{ examples }}/dismissible_list_tiles.py" -``` - -{{ image(example_images + "/dismissible_list_tiles.gif", alt="dismissible-list-tiles", width="80%") }} +{{ code_and_demo(examples + "/dismissible_list_tiles.py", demo_height="420", demo_width="100%") }} ### Remove Dismissible `on_dismiss` inside component @@ -41,8 +34,6 @@ On Flutter’s side, though, the already-dismissed `Dismissible` widget in the m Example: -```python ---8<-- "{{ examples }}/remove_on_dismiss_declarative.py" -``` +{{ code_and_demo(examples + "/remove_on_dismiss_declarative.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/divider.md b/sdk/python/packages/flet/docs/controls/divider.md index a14d51c6c1..f28f5e514e 100644 --- a/sdk/python/packages/flet/docs/controls/divider.md +++ b/sdk/python/packages/flet/docs/controls/divider.md @@ -2,22 +2,15 @@ class_name: flet.Divider examples: ../../examples/controls/divider example_images: ../test-images/examples/material/golden/macos/divider -example_media: ../examples/controls/divider/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Divider") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/divider) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="320", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/draggable.md b/sdk/python/packages/flet/docs/controls/draggable.md index 0b7f12f81f..1c68d47695 100644 --- a/sdk/python/packages/flet/docs/controls/draggable.md +++ b/sdk/python/packages/flet/docs/controls/draggable.md @@ -1,30 +1,21 @@ --- class_name: flet.Draggable examples: ../../examples/controls/drag_target_and_draggable -example_images: ../examples/controls/drag_target_and_draggable/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/utility/draggable) - ### Drag and drop Containers #### Imperative -```python ---8<-- "{{ examples }}/drag_and_drop_containers.py" -``` +{{ code_and_demo(examples + "/drag_and_drop_containers.py", demo_height="420", demo_width="100%") }} #### Declarative -```python ---8<-- "{{ examples }}/drag_and_drop_containers_declarative.py" -``` - -{{ image(example_images + "/drag_and_drop_containers.gif", alt="drag-and-drop-containers", width="80%") }} +{{ code_and_demo(examples + "/drag_and_drop_containers_declarative.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/dragtarget.md b/sdk/python/packages/flet/docs/controls/dragtarget.md index ef8fb35fa9..6e829d5ac1 100644 --- a/sdk/python/packages/flet/docs/controls/dragtarget.md +++ b/sdk/python/packages/flet/docs/controls/dragtarget.md @@ -2,8 +2,10 @@ class_name: flet.DragTarget --- +{{ class_summary(class_name) }} + ## Examples See [these](draggable.md#examples). -{{ class_all_options(class_name) }} +{{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/dropdown/index.md b/sdk/python/packages/flet/docs/controls/dropdown/index.md index e4f2ba9025..b239aa05c7 100644 --- a/sdk/python/packages/flet/docs/controls/dropdown/index.md +++ b/sdk/python/packages/flet/docs/controls/dropdown/index.md @@ -2,7 +2,6 @@ class_name: flet.Dropdown examples: ../../examples/controls/dropdown example_images: ../../test-images/examples/material/golden/macos/dropdown -example_media: ../../examples/controls/dropdown/media --- # Dropdown @@ -11,31 +10,17 @@ example_media: ../../examples/controls/dropdown/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/dropdown) - ### Color selection with filtering -```python ---8<-- "{{ examples }}/color_selection_with_filtering.py" -``` - -{{ image(example_media + "/color_selection_with_filtering.gif", alt="color-selection-with-filtering", width="80%") }} - - +{{ code_and_demo(examples + "/color_selection_with_filtering.py", demo_height="420", demo_width="100%") }} ### Icon selection -```python ---8<-- "{{ examples }}/icon_selection.py" -``` - -{{ image(example_media + "/icon_selection.png", alt="icon-selection", width="80%") }} +{{ code_and_demo(examples + "/icon_selection.py", demo_height="420", demo_width="100%") }} ### Styled dropdowns -```python ---8<-- "{{ examples }}/styled.py" -``` +{{ code_and_demo(examples + "/styled.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/dropdownm2.md b/sdk/python/packages/flet/docs/controls/dropdownm2.md index ce4315e4f0..feb170a132 100644 --- a/sdk/python/packages/flet/docs/controls/dropdownm2.md +++ b/sdk/python/packages/flet/docs/controls/dropdownm2.md @@ -2,50 +2,27 @@ class_name: flet.DropdownM2 examples: ../../examples/controls/dropdown_m2 example_images: ../test-images/examples/material/golden/macos/dropdown_m2 -example_media: ../examples/controls/dropdown_m2/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic DropdownM2") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/dropdown) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Dropdown with label and hint -```python ---8<-- "{{ examples }}/label_and_hint.py" -``` - -{{ image(example_media + "/label_and_hint.gif", alt="label-and-hint", width="80%") }} - +{{ code_and_demo(examples + "/label_and_hint.py", demo_height="420", demo_width="100%") }} ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` - -{{ image(example_media + "/handling_events.gif", alt="handling-events", width="80%") }} - - +{{ code_and_demo(examples + "/handling_events.py", demo_height="420", demo_width="100%") }} ### Add and delete options -```python ---8<-- "{{ examples }}/add_and_delete_options.py" -``` - -{{ image(example_media + "/add_and_delete_options.gif", alt="add-and-delete-options", width="80%") }} +{{ code_and_demo(examples + "/add_and_delete_options.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/expansionpanellist.md b/sdk/python/packages/flet/docs/controls/expansionpanellist.md index 09fdb92c7a..812914e5a5 100644 --- a/sdk/python/packages/flet/docs/controls/expansionpanellist.md +++ b/sdk/python/packages/flet/docs/controls/expansionpanellist.md @@ -2,22 +2,15 @@ class_name: flet.ExpansionPanelList examples: ../../examples/controls/expansion_panel_list example_images: ../test-images/examples/material/golden/macos/expansion_panel_list -example_media: ../examples/controls/expansion_panel_list/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic ExpansionPanelList") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/expansionpanellist) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/expansiontile.md b/sdk/python/packages/flet/docs/controls/expansiontile.md index 7c45eeb2b4..7d2e5a3610 100644 --- a/sdk/python/packages/flet/docs/controls/expansiontile.md +++ b/sdk/python/packages/flet/docs/controls/expansiontile.md @@ -8,38 +8,25 @@ example_images: ../test-images/examples/material/golden/macos/expansion_tile ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/expansiontile) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ## Programmatic expansion/collapse -```python ---8<-- "{{ examples }}/programmatic_expansion.py" -``` +{{ code_and_demo(examples + "/programmatic_expansion.py", demo_height="420", demo_width="100%") }} ## Custom animations -```python ---8<-- "{{ examples }}/custom_animations.py" -``` +{{ code_and_demo(examples + "/custom_animations.py", demo_height="420", demo_width="100%") }} ### Theme mode toggle -```python ---8<-- "{{ examples }}/theme_mode_toggle.py" -``` +{{ code_and_demo(examples + "/theme_mode_toggle.py", demo_height="420", demo_width="100%") }} ### Borders -```python ---8<-- "{{ examples }}/borders.py" -``` +{{ code_and_demo(examples + "/borders.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/filepicker.md b/sdk/python/packages/flet/docs/controls/filepicker.md index 13521c33b2..f672ec8004 100644 --- a/sdk/python/packages/flet/docs/controls/filepicker.md +++ b/sdk/python/packages/flet/docs/controls/filepicker.md @@ -1,31 +1,99 @@ --- class_name: flet.FilePicker examples: ../../examples/controls/file_picker -example_images: ../examples/controls/file_picker/media --- {{ class_summary(class_name) }} -## Examples +## Usage -[Live example](https://flet-controls-gallery.fly.dev/utility/filepicker) +Create an instance of `FilePicker`: -### Pick, save, and get directory paths +```python +import flet as ft + +file_picker = ft.FilePicker() +``` + +To open the file picker dialog call one of these three methods: +[`pick_files()`][flet.FilePicker.pick_files], [`save_file()`][flet.FilePicker.save_file] +or [`get_directory_path()`][flet.FilePicker.get_directory_path], depending on the use case. + +In most cases you can use a lambda function for that: ```python ---8<-- "{{ examples }}/pick_save_and_get_directory_path.py" +ft.Button( + content="Pick files, + on_click=lambda _: file_picker.pick_files(allow_multiple=True) +) ``` -{{ image(example_images + "/pick_save_and_get_directory_path.png", width="80%") }} +### Uploading files +To upload one or more files, call [`FilePicker.pick_files()`][flet.FilePicker.pick_files] +to let the user select files, then pass the returned list to +[`FilePicker.upload()`][flet.FilePicker.upload] to perform the upload. -### Pick and upload files +/// admonition | Separate uploads per user + type: note +If you need to separate uploads for each user you can specify a filename +prepended with any number of directories in +[`page.get_upload_url()`][flet.Page.get_upload_url] call, for example: + +```python +upload_url = page.get_upload_url(f"/{username}/pictures/{f.name}", 600) +``` + +`/{username}/pictures` directories will be automatically created inside `upload_dir` if non-existent. +/// + +### Upload storage + +Notice the usage of [`page.get_upload_url()`][flet.Page.get_upload_url] method – +it generates a presigned upload URL for Flet's internal upload storage. + +/// admonition | Use any storage for file uploads + type: note +You can [generate presigned upload URL](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-presigned-urls.html#generating-a-presigned-url-to-upload-a-file) +for AWS S3 storage using boto3 library. + +The same technique should work for [Wasabi](https://wasabi.com/), [Backblaze](https://www.backblaze.com/), +[MinIO](https://min.io/) and any other storage providers with S3-compatible API. +/// + +To enable Flet saving uploaded files to a directory provide a full or +relative path to that directory in `flet.run()` call: ```python ---8<-- "{{ examples }}/pick_and_upload.py" +ft.run(main, upload_dir="uploads") ``` -{{ image(example_images + "/pick_and_upload.png", width="80%") }} +You can even put uploads inside [assets](../cookbook/assets.md) directory, +so uploaded files, e.g. pictures, docs, or other media, +can be accessed from a Flet client right away: + +```python +ft.run(main, assets_dir="assets", upload_dir="assets/uploads") +``` + +and in your app you can display the uploaded picture with: + +```python +ft.Image(src="/uploads/") +``` + +## Examples + +### Pick, save, and get directory paths + +{{ code_and_demo(examples + "/pick_save_and_get_directory_path.py", demo_height="420", demo_width="100%") }} + +### Pick and upload files + +The following example demonstrates multi-file [pick][flet.FilePicker.pick_files] +and [upload][flet.FilePicker.upload] app. + +{{ code_and_demo(examples + "/pick_and_upload.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/filledbutton.md b/sdk/python/packages/flet/docs/controls/filledbutton.md index 493c66e55b..760065a3ef 100644 --- a/sdk/python/packages/flet/docs/controls/filledbutton.md +++ b/sdk/python/packages/flet/docs/controls/filledbutton.md @@ -2,22 +2,15 @@ class_name: flet.FilledButton examples: ../../examples/controls/filled_button example_images: ../test-images/examples/material/golden/macos/filled_button -example_media: ../examples/controls/filled_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic FilledButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/filledbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/filledtonalbutton.md b/sdk/python/packages/flet/docs/controls/filledtonalbutton.md index 8dd3a4f5bf..50529731e0 100644 --- a/sdk/python/packages/flet/docs/controls/filledtonalbutton.md +++ b/sdk/python/packages/flet/docs/controls/filledtonalbutton.md @@ -2,22 +2,15 @@ class_name: flet.FilledTonalButton examples: ../../examples/controls/filled_tonal_button example_images: ../test-images/examples/material/golden/macos/filled_tonal_button -example_media: ../examples/controls/filled_tonal_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic FilledTonalButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/filledtonalbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/floatingactionbutton.md b/sdk/python/packages/flet/docs/controls/floatingactionbutton.md index bf4fbc319c..c9fe96f225 100644 --- a/sdk/python/packages/flet/docs/controls/floatingactionbutton.md +++ b/sdk/python/packages/flet/docs/controls/floatingactionbutton.md @@ -2,22 +2,15 @@ class_name: flet.FloatingActionButton examples: ../../examples/controls/floating_action_button example_images: ../test-images/examples/material/golden/macos/floating_action_button -example_media: ../examples/controls/floating_action_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic FloatingActionButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/floatingactionbutton) - ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_media + "/handling_clicks.gif", alt="handling-clicks", width="80%") }} +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/gesturedetector.md b/sdk/python/packages/flet/docs/controls/gesturedetector.md index 6b8590aac9..7ebe05fa17 100644 --- a/sdk/python/packages/flet/docs/controls/gesturedetector.md +++ b/sdk/python/packages/flet/docs/controls/gesturedetector.md @@ -1,22 +1,17 @@ --- class_name: flet.GestureDetector examples: ../../examples/controls/gesture_detector -example_images: ../examples/controls/gesture_detector/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/utility/gesturedetector) - [Solitaire game tutorial](https://flet.dev/docs/tutorials/python-solitaire) ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` +{{ code_and_demo(examples + "/handling_events.py", demo_height="420", demo_width="100%") }} ### Draggable containers @@ -25,23 +20,15 @@ The following example demonstrates how a control can be freely dragged inside a The sample also shows that GestureDetector can have a child control (blue container) as well as be nested inside another control (yellow container) giving the same results. -```python ---8<-- "{{ examples }}/draggable_containers.py" -``` - -{{ image(example_images + "/draggable_containers.gif", alt="draggable-containers", width="80%") }} - +{{ code_and_demo(examples + "/draggable_containers.py", demo_height="420", demo_width="100%") }} ### Window drag area -```python ---8<-- "{{ examples }}/window_drag_area.py" -``` +{{ code_and_demo(examples + "/window_drag_area.py", demo_height="420", demo_width="100%") }} ### Mouse Cursors -```python ---8<-- "{{ examples }}/mouse_cursors.py" -``` +{{ code_and_demo(examples + "/mouse_cursors.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/gridview.md b/sdk/python/packages/flet/docs/controls/gridview.md index c8d72b98f0..b658506c00 100644 --- a/sdk/python/packages/flet/docs/controls/gridview.md +++ b/sdk/python/packages/flet/docs/controls/gridview.md @@ -2,22 +2,15 @@ class_name: flet.GridView examples: ../../examples/controls/grid_view example_images: ../test-images/examples/core/golden/macos/grid_view -example_media: ../examples/controls/grid_view/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic GridView") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/gridview) - ### Photo gallery -```python ---8<-- "{{ examples }}/photo_gallery.py" -``` - -{{ image(example_media + "/photo_gallery.png", alt="photo-gallery", width="80%") }} +{{ code_and_demo(examples + "/photo_gallery.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/hapticfeedback.md b/sdk/python/packages/flet/docs/controls/hapticfeedback.md index 82b074a625..559525b82d 100644 --- a/sdk/python/packages/flet/docs/controls/hapticfeedback.md +++ b/sdk/python/packages/flet/docs/controls/hapticfeedback.md @@ -9,8 +9,6 @@ examples: ../../examples/controls/haptic_feedback ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/icon.md b/sdk/python/packages/flet/docs/controls/icon.md index 1303e51a0c..9bfdbe331c 100644 --- a/sdk/python/packages/flet/docs/controls/icon.md +++ b/sdk/python/packages/flet/docs/controls/icon.md @@ -2,7 +2,6 @@ class_name: flet.Icon examples: ../../examples/controls/icon example_images: ../test-images/examples/core/golden/macos/icon -example_media: ../examples/controls/icon/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Icon") }} @@ -12,15 +11,9 @@ example_media: ../examples/controls/icon/media To browse and visualize all available icons, visit our [icons browser](https://gallery.flet.dev/icons-browser/) -[Live example](https://flet-controls-gallery.fly.dev/displays/icon) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/iconbutton.md b/sdk/python/packages/flet/docs/controls/iconbutton.md index b3a61b2eab..833587babe 100644 --- a/sdk/python/packages/flet/docs/controls/iconbutton.md +++ b/sdk/python/packages/flet/docs/controls/iconbutton.md @@ -2,28 +2,19 @@ class_name: flet.IconButton examples: ../../examples/controls/icon_button example_images: ../test-images/examples/material/golden/macos/icon_button -example_media: ../examples/controls/icon_button/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic IconButton") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/iconbutton) - ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_media + "/handling_clicks.gif", alt="handling-clicks", width="80%") }} - +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="420", demo_width="100%") }} ### Selected icon -```python ---8<-- "{{ examples }}/selected_icon.py" -``` +{{ code_and_demo(examples + "/selected_icon.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/image.md b/sdk/python/packages/flet/docs/controls/image.md index 40b913231a..5619c7fb9a 100644 --- a/sdk/python/packages/flet/docs/controls/image.md +++ b/sdk/python/packages/flet/docs/controls/image.md @@ -2,45 +2,31 @@ class_name: flet.Image examples: ../../examples/controls/image example_images: ../test-images/examples/core/golden/macos/image -example_media: ../examples/controls/image/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Image") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/image) - ### Image gallery -```python ---8<-- "{{ examples }}/gallery.py" -``` - -{{ image(example_media + "/gallery.gif", width="80%") }} +{{ code_and_demo(examples + "/gallery.py", demo_height="420", demo_width="100%") }} ### Displaying images from base64 strings and byte data -```python ---8<-- "{{ examples }}/src_base64_and_bytes.py" -``` +{{ code_and_demo(examples + "/src_base64_and_bytes.py", demo_height="420", demo_width="100%") }} ### Displaying a static SVG image -```python ---8<-- "{{ examples }}/static_svg.py" -``` +{{ code_and_demo(examples + "/static_svg.py", demo_height="420", demo_width="100%") }} ### Displaying a dynamic SVG image -```python ---8<-- "{{ examples }}/dynamic_svg.py" -``` +{{ code_and_demo(examples + "/dynamic_svg.py", demo_height="420", demo_width="100%") }} ### Displaying a Lucide icon -```python ---8<-- "{{ examples }}/lucide_icons.py" -``` +{{ code_and_demo(examples + "/lucide_icons.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/interactiveviewer.md b/sdk/python/packages/flet/docs/controls/interactiveviewer.md index 0f9fc41d1a..75ce494bc9 100644 --- a/sdk/python/packages/flet/docs/controls/interactiveviewer.md +++ b/sdk/python/packages/flet/docs/controls/interactiveviewer.md @@ -7,18 +7,13 @@ examples: ../../examples/controls/interactive_viewer ## Examples -[Live example](https://flet-controls-gallery.fly.dev/utility/interactiveviewer) - ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` +{{ code_and_demo(examples + "/handling_events.py", demo_height="420", demo_width="100%") }} ### Programmatic transformations -```python ---8<-- "{{ examples }}/transformations.py" -``` +{{ code_and_demo(examples + "/transformations.py", demo_height="510", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/keyboardlistener.md b/sdk/python/packages/flet/docs/controls/keyboardlistener.md index a293db45df..4555f53cab 100644 --- a/sdk/python/packages/flet/docs/controls/keyboardlistener.md +++ b/sdk/python/packages/flet/docs/controls/keyboardlistener.md @@ -9,8 +9,6 @@ examples: ../../examples/controls/keyboard_listener ### Press any keys -```python ---8<-- "{{ examples }}/detect_keys.py" -``` +{{ code_and_demo(examples + "/detect_keys.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/listtile.md b/sdk/python/packages/flet/docs/controls/listtile.md index 0edd2263f3..dccf6151e2 100644 --- a/sdk/python/packages/flet/docs/controls/listtile.md +++ b/sdk/python/packages/flet/docs/controls/listtile.md @@ -2,22 +2,15 @@ class_name: flet.ListTile examples: ../../examples/controls/list_tile example_images: ../test-images/examples/material/golden/macos/list_tile -example_media: ../examples/controls/list_tile/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic ListTile") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/listtile) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/listview.md b/sdk/python/packages/flet/docs/controls/listview.md index 4682fea2d0..07b0836dc7 100644 --- a/sdk/python/packages/flet/docs/controls/listview.md +++ b/sdk/python/packages/flet/docs/controls/listview.md @@ -1,22 +1,15 @@ --- class_name: flet.ListView examples: ../../examples/controls/list_view -example_images: ../examples/controls/list_view/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/listview) - ### Auto-scrolling and dynamical items addition -```python ---8<-- "{{ examples }}/autoscroll_and_dynamic_items.py" -``` - -{{ image(example_images + "/autoscroll_and_dynamic_items.gif", alt="autoscroll-and-dynamic-items", width="80%") }} +{{ code_and_demo(examples + "/autoscroll_and_dynamic_items.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/markdown.md b/sdk/python/packages/flet/docs/controls/markdown.md index 571e51640f..fbc1161831 100644 --- a/sdk/python/packages/flet/docs/controls/markdown.md +++ b/sdk/python/packages/flet/docs/controls/markdown.md @@ -2,37 +2,23 @@ class_name: flet.Markdown examples: ../../examples/controls/markdown example_images: ../test-images/examples/core/golden/macos/markdown -example_media: ../examples/controls/markdown/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Markdown") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/markdown) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Code syntax highlight -```python ---8<-- "{{ examples }}/code_syntax_highlight.py" -``` - -{{ image(example_images + "/code_syntax_highlight.png", alt="code-syntax-highlight", width="80%") }} - +{{ code_and_demo(examples + "/code_syntax_highlight.py", demo_height="420", demo_width="100%") }} ### Custom text theme -```python ---8<-- "{{ examples }}/custom_text_theme.py" -``` +{{ code_and_demo(examples + "/custom_text_theme.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/menubar.md b/sdk/python/packages/flet/docs/controls/menubar.md index 6d93acfe65..b61ac005d1 100644 --- a/sdk/python/packages/flet/docs/controls/menubar.md +++ b/sdk/python/packages/flet/docs/controls/menubar.md @@ -1,22 +1,15 @@ --- class_name: flet.MenuBar examples: ../../examples/controls/menu_bar -example_images: ../examples/controls/menu_bar/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/menubar) - ### `MenuBar` with Nested Submenus -```python ---8<-- "{{ examples }}/nested_submenus.py" -``` - -{{ image(example_images + "/nested_submenus.gif", width="80%") }} +{{ code_and_demo(examples + "/nested_submenus.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/menuitembutton.md b/sdk/python/packages/flet/docs/controls/menuitembutton.md index 332c0896f2..ab458eccf6 100644 --- a/sdk/python/packages/flet/docs/controls/menuitembutton.md +++ b/sdk/python/packages/flet/docs/controls/menuitembutton.md @@ -1,22 +1,15 @@ --- class_name: flet.MenuItemButton examples: ../../examples/controls/menu_item_button -example_images: ../examples/controls/menu_item_button/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/menuitembutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/navigationbar/index.md b/sdk/python/packages/flet/docs/controls/navigationbar/index.md index f7d7d09a1e..475e8cbebf 100644 --- a/sdk/python/packages/flet/docs/controls/navigationbar/index.md +++ b/sdk/python/packages/flet/docs/controls/navigationbar/index.md @@ -1,7 +1,6 @@ --- class_name: flet.NavigationBar examples: ../../examples/controls/navigation_bar -example_images: ../../examples/controls/navigation_bar/media --- # NavigationBar @@ -10,15 +9,9 @@ example_images: ../../examples/controls/navigation_bar/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/navigationbar) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/navigationdrawer/index.md b/sdk/python/packages/flet/docs/controls/navigationdrawer/index.md index 00cc9a2147..7902a0fbe6 100644 --- a/sdk/python/packages/flet/docs/controls/navigationdrawer/index.md +++ b/sdk/python/packages/flet/docs/controls/navigationdrawer/index.md @@ -1,7 +1,6 @@ --- class_name: flet.NavigationDrawer examples: ../../examples/controls/navigation_drawer -example_images: ../../examples/controls/navigation_drawer/media --- # NavigationDrawer @@ -10,24 +9,13 @@ example_images: ../../examples/controls/navigation_drawer/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/navigationdrawer) - ### Start-aligned drawer -```python ---8<-- "{{ examples }}/position_start.py" -``` - -{{ image(example_images + "/position_start.gif", alt="position-start", width="80%") }} - +{{ code_and_demo(examples + "/position_start.py", demo_height="420", demo_width="100%") }} ### End-aligned drawer -```python ---8<-- "{{ examples }}/position_end.py" -``` - -{{ image(example_images + "/position_end.gif", alt="position-end", width="80%") }} +{{ code_and_demo(examples + "/position_end.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/navigationrail/index.md b/sdk/python/packages/flet/docs/controls/navigationrail/index.md index ccd4cd94b8..73709477db 100644 --- a/sdk/python/packages/flet/docs/controls/navigationrail/index.md +++ b/sdk/python/packages/flet/docs/controls/navigationrail/index.md @@ -1,7 +1,6 @@ --- class_name: flet.NavigationRail examples: ../../examples/controls/navigation_rail -example_images: ../../examples/controls/navigation_rail/media --- # NavigationRail @@ -10,15 +9,9 @@ example_images: ../../examples/controls/navigation_rail/media ## Examples -[Live example](https://flet-controls-gallery.fly.dev/navigation/navigationrail) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/outlinedbutton.md b/sdk/python/packages/flet/docs/controls/outlinedbutton.md index b4150b9c15..a76b24fdda 100644 --- a/sdk/python/packages/flet/docs/controls/outlinedbutton.md +++ b/sdk/python/packages/flet/docs/controls/outlinedbutton.md @@ -1,49 +1,27 @@ --- class_name: flet.OutlinedButton examples: ../../examples/controls/outlined_button -example_images: ../examples/controls/outlined_button/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/outlinedbutton) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_images + "/handling_clicks.gif", alt="handling-clicks", width="80%") }} - +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="420", demo_width="100%") }} ### Icons -```python ---8<-- "{{ examples }}/icons.py" -``` - -{{ image(example_images + "/icons.png", alt="icons", width="80%") }} - +{{ code_and_demo(examples + "/icons.py", demo_height="420", demo_width="100%") }} ### Custom content -```python ---8<-- "{{ examples }}/custom_content.py" -``` - -{{ image(example_images + "/custom_content.png", alt="custom-content", width="80%") }} +{{ code_and_demo(examples + "/custom_content.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/page.md b/sdk/python/packages/flet/docs/controls/page.md index 7b7f628a59..1f16a77488 100644 --- a/sdk/python/packages/flet/docs/controls/page.md +++ b/sdk/python/packages/flet/docs/controls/page.md @@ -1,7 +1,6 @@ --- class_name: flet.Page examples: ../../examples/controls/page -example_images: ../examples/controls/page/media --- {{ class_summary(class_name) }} @@ -10,29 +9,22 @@ example_images: ../examples/controls/page/media ### Listening to keyboard events -```python ---8<-- "{{ examples }}/keyboard_events.py" -``` +{{ code_and_demo(examples + "/keyboard_events.py", demo_height="420", demo_width="100%") }} ### Mobile device orientation configuration Shows how to lock your app to specific device orientations (e.g., portrait up, landscape right) and listen for orientation changes on mobile devices. -```python ---8<-- "{{ examples }}/device_orientation.py" -``` +{{ code(examples + "/device_orientation.py") }} ### App exit confirmation -```python ---8<-- "{{ examples }}/app_exit_confirm_dialog.py" -``` +{{ code(examples + "/app_exit_confirm_dialog.py") }} ### Hidden app window on startup -```python ---8<-- "{{ examples }}/window_hidden_on_start.py" -``` +{{ code(examples + "/window_hidden_on_start.py") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/pagelet.md b/sdk/python/packages/flet/docs/controls/pagelet.md index a824569939..3481105625 100644 --- a/sdk/python/packages/flet/docs/controls/pagelet.md +++ b/sdk/python/packages/flet/docs/controls/pagelet.md @@ -8,15 +8,9 @@ example_images: ../test-images/examples/core/golden/macos/pagelet ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/pagelet) - ### Basic example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="525", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/placeholder.md b/sdk/python/packages/flet/docs/controls/placeholder.md index 3f063312c6..96cf8525a9 100644 --- a/sdk/python/packages/flet/docs/controls/placeholder.md +++ b/sdk/python/packages/flet/docs/controls/placeholder.md @@ -1,22 +1,15 @@ --- class_name: flet.Placeholder examples: ../../examples/controls/placeholder -example_images: ../examples/controls/placeholder/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/placeholder) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/popupmenubutton.md b/sdk/python/packages/flet/docs/controls/popupmenubutton.md deleted file mode 100644 index 52d5f99a7d..0000000000 --- a/sdk/python/packages/flet/docs/controls/popupmenubutton.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -class_name: flet.PopupMenuButton -examples: ../../examples/controls/popup_menu_button -example_images: ../examples/controls/popup_menu_button/media -popup_menu_item_class_name: flet.PopupMenuItem ---- - -{{ class_summary(class_name) }} - -## Examples - -[Live example](https://flet-controls-gallery.fly.dev/buttons/popupmenubutton) - -### Basic Example - -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} - - -{{ class_members(class_name) }} - -{{ class_all_options(popup_menu_item_class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/popupmenubutton/index.md b/sdk/python/packages/flet/docs/controls/popupmenubutton/index.md new file mode 100644 index 0000000000..1baff46863 --- /dev/null +++ b/sdk/python/packages/flet/docs/controls/popupmenubutton/index.md @@ -0,0 +1,16 @@ +--- +class_name: flet.PopupMenuButton +examples: ../../examples/controls/popup_menu_button +--- + +# PopupMenuButton + +{{ class_summary(class_name) }} + +## Examples + +### Basic Example + +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} + +{{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/popupmenuitem.md b/sdk/python/packages/flet/docs/controls/popupmenuitem.md new file mode 100644 index 0000000000..47395b85f4 --- /dev/null +++ b/sdk/python/packages/flet/docs/controls/popupmenuitem.md @@ -0,0 +1,5 @@ +--- +class_name: flet.PopupMenuItem +--- + +{{ class_all_options(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/progressbar.md b/sdk/python/packages/flet/docs/controls/progressbar.md index 96e19f08e5..1ac94781bc 100644 --- a/sdk/python/packages/flet/docs/controls/progressbar.md +++ b/sdk/python/packages/flet/docs/controls/progressbar.md @@ -1,22 +1,15 @@ --- class_name: flet.ProgressBar examples: ../../examples/controls/progress_bar -example_images: ../examples/controls/progress_bar/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/progressbar) - ### Determinate and indeterminate progress bars -```python ---8<-- "{{ examples }}/determinate_and_indeterminate.py" -``` - -{{ image(example_images + "/determinate_and_indeterminate.gif", alt="determinate-and-indeterminate", width="80%") }} +{{ code_and_demo(examples + "/determinate_and_indeterminate.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/progressring.md b/sdk/python/packages/flet/docs/controls/progressring.md index 31f771ced5..b83e355f28 100644 --- a/sdk/python/packages/flet/docs/controls/progressring.md +++ b/sdk/python/packages/flet/docs/controls/progressring.md @@ -1,28 +1,19 @@ --- class_name: flet.ProgressRing examples: ../../examples/controls/progress_ring -example_images: ../examples/controls/progress_ring/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/progressring) - ### Determinate and indeterminate progress rings -```python ---8<-- "{{ examples }}/determinate_and_indeterminate.py" -``` - -{{ image(example_images + "/determinate_and_indeterminate.gif", alt="determinate-and-indeterminate", width="80%") }} - +{{ code_and_demo(examples + "/determinate_and_indeterminate.py", demo_height="420", demo_width="100%") }} ### Gauge with progress -```python ---8<-- "{{ examples }}/gauge_with_progress.py" -``` +{{ code_and_demo(examples + "/gauge_with_progress.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/radio.md b/sdk/python/packages/flet/docs/controls/radio.md index 308c2a1c16..50c1543480 100644 --- a/sdk/python/packages/flet/docs/controls/radio.md +++ b/sdk/python/packages/flet/docs/controls/radio.md @@ -1,38 +1,23 @@ --- class_name: flet.Radio examples: ../../examples/controls/radio -example_images: ../examples/controls/radio/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/radio) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} - - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Handling selection changes -```python ---8<-- "{{ examples }}/handling_selection_changes.py" -``` - -{{ image(example_images + "/handling_selection_changes.gif", alt="handling-selection-changes", width="80%") }} - +{{ code_and_demo(examples + "/handling_selection_changes.py", demo_height="420", demo_width="100%") }} ### Styled radio buttons -```python ---8<-- "{{ examples }}/styled.py" -``` +{{ code_and_demo(examples + "/styled.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/rangeslider.md b/sdk/python/packages/flet/docs/controls/rangeslider.md index 49545f657e..bd0db0013c 100644 --- a/sdk/python/packages/flet/docs/controls/rangeslider.md +++ b/sdk/python/packages/flet/docs/controls/rangeslider.md @@ -1,28 +1,19 @@ --- class_name: flet.RangeSlider examples: ../../examples/controls/range_slider -example_images: ../examples/controls/range_slider/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/rangeslider) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} +### Handling change events -### RangeSlider with events +{{ code_and_demo(examples + "/handling_change_events.py", demo_height="420", demo_width="100%") }} -```python ---8<-- "{{ examples }}/handling_change_events.py" -``` {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/reorderabledraghandle.md b/sdk/python/packages/flet/docs/controls/reorderabledraghandle.md index 42b0530a3a..9d91b6233d 100644 --- a/sdk/python/packages/flet/docs/controls/reorderabledraghandle.md +++ b/sdk/python/packages/flet/docs/controls/reorderabledraghandle.md @@ -9,8 +9,7 @@ examples: ../../examples/controls/reorderable_drag_handle ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/reorderablelistview.md b/sdk/python/packages/flet/docs/controls/reorderablelistview.md index ac29465870..33f74b65cb 100644 --- a/sdk/python/packages/flet/docs/controls/reorderablelistview.md +++ b/sdk/python/packages/flet/docs/controls/reorderablelistview.md @@ -1,26 +1,19 @@ --- class_name: flet.ReorderableListView examples: ../../examples/controls/reorderable_list_view -example_images: ../examples/controls/reorderable_list_view/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/autofillgroup) - ### Horizontal and Vertical -```python ---8<-- "{{ examples }}/horizontal_and_vertical.py" -``` - -{{ image(example_images + "/horizontal_and_vertical.gif", alt="horizontal-and-vertical", width="80%") }} - +{{ code_and_demo(examples + "/horizontal_and_vertical.py", demo_height="420", demo_width="100%") }} ### Custom drag handle See [this](reorderabledraghandle.md#examples). + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/responsiverow.md b/sdk/python/packages/flet/docs/controls/responsiverow.md index e321ca2455..4eb2b5428e 100644 --- a/sdk/python/packages/flet/docs/controls/responsiverow.md +++ b/sdk/python/packages/flet/docs/controls/responsiverow.md @@ -1,29 +1,20 @@ --- class_name: flet.ResponsiveRow examples: ../../examples/controls/responsive_row -example_images: ../examples/controls/responsive_row/media --- {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/responsiverow) - ### ResponsiveRow -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Custom breakpoints -```python ---8<-- "{{ examples }}/custom_breakpoint.py" -``` +{{ code_and_demo(examples + "/custom_breakpoint.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/row.md b/sdk/python/packages/flet/docs/controls/row.md index aa1f07143a..7fdcc661f4 100644 --- a/sdk/python/packages/flet/docs/controls/row.md +++ b/sdk/python/packages/flet/docs/controls/row.md @@ -8,42 +8,21 @@ example_images: ../test-images/examples/core/golden/macos/row ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/row) - ### Spacing children -```python ---8<-- "{{ examples }}/spacing.py" -``` - -{{ image(example_images + "/row_spacing_adjustment.gif", alt="spacing", width="80%") }} - +{{ code_and_demo(examples + "/spacing.py", demo_height="420", demo_width="100%") }} ### Wrapping children -```python ---8<-- "{{ examples }}/wrap.py" -``` - -{{ image(example_images + "/wrap_adjustment.gif", alt="wrap", width="80%") }} - - -### Setting horizontal alignment - -```python ---8<-- "{{ examples }}/alignment.py" -``` - -{{ image(example_images + "/alignment.png", alt="alignment", width="60%") }} +{{ code_and_demo(examples + "/wrap.py", demo_height="420", demo_width="100%") }} +### Horizontal alignment -### Setting vertical alignment +{{ code_and_demo(examples + "/alignment.py", demo_height="570", demo_width="100%") }} -```python ---8<-- "{{ examples }}/vertical_alignment.py" -``` +### Vertical alignment -{{ image(example_images + "/vertical_alignment.png", alt="vertical-alignment", width="60%") }} +{{ code_and_demo(examples + "/vertical_alignment.py", demo_height="570", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/safearea.md b/sdk/python/packages/flet/docs/controls/safearea.md index 3daff58e89..ac50ee31e1 100644 --- a/sdk/python/packages/flet/docs/controls/safearea.md +++ b/sdk/python/packages/flet/docs/controls/safearea.md @@ -7,12 +7,9 @@ examples: ../../examples/controls/safe_area ## Example -[Live example](https://flet-controls-gallery.fly.dev/layout/safearea) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/screenshot.md b/sdk/python/packages/flet/docs/controls/screenshot.md index 4873722e58..e962734209 100644 --- a/sdk/python/packages/flet/docs/controls/screenshot.md +++ b/sdk/python/packages/flet/docs/controls/screenshot.md @@ -9,8 +9,7 @@ examples: ../../examples/controls/screenshot ### Taking control screenshot -```python ---8<-- "{{ examples }}/taking_screenshot.py" -``` +{{ code_and_demo(examples + "/taking_screenshot.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/searchbar.md b/sdk/python/packages/flet/docs/controls/searchbar.md index 8a8610a5ba..cf8a2b2ed6 100644 --- a/sdk/python/packages/flet/docs/controls/searchbar.md +++ b/sdk/python/packages/flet/docs/controls/searchbar.md @@ -8,15 +8,9 @@ example_images: ../test-images/examples/material/golden/macos/search_bar ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/searchbar) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/segmentedbutton.md b/sdk/python/packages/flet/docs/controls/segmentedbutton.md deleted file mode 100644 index 30c59806ce..0000000000 --- a/sdk/python/packages/flet/docs/controls/segmentedbutton.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -class_name: flet.SegmentedButton -examples: ../../examples/controls/segmented_button -example_images: ../test-images/examples/material/golden/macos/segmented_button ---- - -{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic segmented button") }} - -## Examples - -[Live example](https://flet-controls-gallery.fly.dev/buttons/segmentedbutton) - -### Basic Example - -```python ---8<-- "{{ examples }}/single_multiple_selection.py" -``` - -{{ image(example_images + "/single_multiple_selection.png", width="80%") }} - - -{{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/segmentedbutton/index.md b/sdk/python/packages/flet/docs/controls/segmentedbutton/index.md new file mode 100644 index 0000000000..f64126c665 --- /dev/null +++ b/sdk/python/packages/flet/docs/controls/segmentedbutton/index.md @@ -0,0 +1,18 @@ +--- +class_name: flet.SegmentedButton +examples: ../../examples/controls/segmented_button +example_images: ../../test-images/examples/material/golden/macos/segmented_button +--- + +# SegmentedButton + +{{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic segmented button") }} + +## Examples + +### Basic Example + +{{ code_and_demo(examples + "/single_multiple_selection.py", demo_height="420", demo_width="100%") }} + + +{{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/selectionarea.md b/sdk/python/packages/flet/docs/controls/selectionarea.md index f64bbf0a30..9ab3538999 100644 --- a/sdk/python/packages/flet/docs/controls/selectionarea.md +++ b/sdk/python/packages/flet/docs/controls/selectionarea.md @@ -2,7 +2,6 @@ class_name: flet.SelectionArea examples: ../../examples/controls/selection_area example_images: ../test-images/examples/material/golden/macos/selection_area -example_media: ../examples/controls/selection_area/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Selectable and unselectable text") }} @@ -11,11 +10,7 @@ example_media: ../examples/controls/selection_area/media ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/semantics.md b/sdk/python/packages/flet/docs/controls/semantics.md index 15377b0943..76e19f1bf7 100644 --- a/sdk/python/packages/flet/docs/controls/semantics.md +++ b/sdk/python/packages/flet/docs/controls/semantics.md @@ -9,8 +9,6 @@ examples: ../../examples/controls/semantics ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/semanticsservice.md b/sdk/python/packages/flet/docs/controls/semanticsservice.md index e2b2f46ad5..e61ff1a669 100644 --- a/sdk/python/packages/flet/docs/controls/semanticsservice.md +++ b/sdk/python/packages/flet/docs/controls/semanticsservice.md @@ -9,8 +9,6 @@ examples: ../../examples/controls/semantics_service ### Retrieve accessibility features -```python ---8<-- "{{ examples }}/accessibility_features.py" -``` +{{ code_and_demo(examples + "/accessibility_features.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/shadermask.md b/sdk/python/packages/flet/docs/controls/shadermask.md index ee3c13d039..d5ee933d90 100644 --- a/sdk/python/packages/flet/docs/controls/shadermask.md +++ b/sdk/python/packages/flet/docs/controls/shadermask.md @@ -8,33 +8,17 @@ example_images: ../test-images/examples/core/golden/macos/shader_mask ## Examples -[Live example](https://flet-controls-gallery.fly.dev/utility/shadermask) - ### Pink glow around image edges -```python ---8<-- "{{ examples }}/pink_radial_glow.py" -``` - -{{ image(example_images + "/pink_radial_glow.png", alt="pink-radial-glow", width="80%") }} - - +{{ code_and_demo(examples + "/pink_radial_glow.py", demo_height="420", demo_width="100%") }} ### Fade out bottom edge of an image -```python ---8<-- "{{ examples }}/fade_out_image_bottom.py" -``` - -{{ image(example_images + "/fade_out_image_bottom.png", alt="fade-out-image-bottom", width="80%") }} - +{{ code_and_demo(examples + "/fade_out_image_bottom.py", demo_height="420", demo_width="100%") }} ### Applying linear and radial gradients/shaders -```python ---8<-- "{{ examples }}/linear_and_radial_gradients.py" -``` +{{ code_and_demo(examples + "/linear_and_radial_gradients.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/linear_and_radial_gradients.png", alt="fade-out-image-bottom", width="80%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/shakedetector.md b/sdk/python/packages/flet/docs/controls/shakedetector.md index e5de549874..0e155b5efa 100644 --- a/sdk/python/packages/flet/docs/controls/shakedetector.md +++ b/sdk/python/packages/flet/docs/controls/shakedetector.md @@ -9,8 +9,6 @@ examples: ../../examples/controls/shake_detector ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code(examples + "/basic.py") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/shimmer.md b/sdk/python/packages/flet/docs/controls/shimmer.md index b828222001..d633383c42 100644 --- a/sdk/python/packages/flet/docs/controls/shimmer.md +++ b/sdk/python/packages/flet/docs/controls/shimmer.md @@ -10,26 +10,15 @@ example_images: ../test-images/examples/core/golden/macos/shimmer ### Basic -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/image_for_docs.gif", alt="custom-label", width="50%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Skeleton list placeholders -```python ---8<-- "{{ examples }}/basic_placeholder.py" -``` - -{{ image(example_images + "/basic_placeholder.png", alt="custom-label", width="50%") }} +{{ code_and_demo(examples + "/basic_placeholder.py", demo_height="420", demo_width="100%") }} ### Custom gradients and directions -```python ---8<-- "{{ examples }}/custom_gradient.py" -``` +{{ code_and_demo(examples + "/custom_gradient.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/custom_gradient.png", alt="custom-label", width="50%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/slider.md b/sdk/python/packages/flet/docs/controls/slider.md index 2d58ac65b6..ce7c974af0 100644 --- a/sdk/python/packages/flet/docs/controls/slider.md +++ b/sdk/python/packages/flet/docs/controls/slider.md @@ -8,34 +8,17 @@ example_images: ../test-images/examples/material/golden/macos/slider ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/slider/basic) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="320", demo_width="100%") }} ### Setting a custom label -```python ---8<-- "{{ examples }}/custom_label.py" -``` - -{{ image(example_images + "/custom_label.png", alt="custom-label", width="80%") }} - +{{ code_and_demo(examples + "/custom_label.py", demo_height="320", demo_width="100%") }} ### Handling events -```python ---8<-- "{{ examples }}/handling_events.py" -``` - -{{ image(example_images + "/handling_events.png", alt="handling-events", width="80%") }} - +{{ code_and_demo(examples + "/handling_events.py", demo_height="360", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/snackbar.md b/sdk/python/packages/flet/docs/controls/snackbar.md index c1e0a87e55..c29877cadb 100644 --- a/sdk/python/packages/flet/docs/controls/snackbar.md +++ b/sdk/python/packages/flet/docs/controls/snackbar.md @@ -9,34 +9,18 @@ snack_bar_action_class_name: flet.SnackBarAction ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/snackbar) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Counter -```python ---8<-- "{{ examples }}/counter.py" -``` - -{{ image(example_images + "/snack_bar_flow.gif", alt="Snack bar with counter", caption="Snack bar with counter",width="50%") }} +{{ code_and_demo(examples + "/counter.py", demo_height="420", demo_width="100%") }} ### Action -```python ---8<-- "{{ examples }}/action.py" -``` - -{{ image(example_images + "/action_simple.png", alt="Snack bar with a simple action", caption="Snack bar with a simple action", width="50%") }} +{{ code_and_demo(examples + "/action.py", demo_height="420", demo_width="100%") }} -{{ image(example_images + "/action_custom.png", alt="Snack bar with a custom action", caption="Snack bar with a custom action", width="50%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/stack.md b/sdk/python/packages/flet/docs/controls/stack.md index 493127ccc9..d7b13fc98f 100644 --- a/sdk/python/packages/flet/docs/controls/stack.md +++ b/sdk/python/packages/flet/docs/controls/stack.md @@ -8,26 +8,13 @@ example_images: ../test-images/examples/core/golden/macos/stack ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/stack) - - - ### Avatar with online status -```python ---8<-- "{{ examples }}/online_avatar.py" -``` - -{{ image(example_images + "/online_avatar.png", alt="online-avatar", width="80%") }} - +{{ code_and_demo(examples + "/online_avatar.py", demo_height="420", demo_width="100%") }} ### Absolute positioning -```python ---8<-- "{{ examples }}/absolute_positioning.py" -``` - -{{ image(example_images + "/absolute_positioning.png", alt="absolute-positioning", width="80%") }} +{{ code_and_demo(examples + "/absolute_positioning.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/submenubutton.md b/sdk/python/packages/flet/docs/controls/submenubutton.md index 814cd17748..353e70c56c 100644 --- a/sdk/python/packages/flet/docs/controls/submenubutton.md +++ b/sdk/python/packages/flet/docs/controls/submenubutton.md @@ -8,15 +8,9 @@ example_images: ../test-images/examples/material/golden/macos/submenu_button ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/submenubutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/switch.md b/sdk/python/packages/flet/docs/controls/switch.md index 522ab1cda1..d765b069f8 100644 --- a/sdk/python/packages/flet/docs/controls/switch.md +++ b/sdk/python/packages/flet/docs/controls/switch.md @@ -2,31 +2,19 @@ class_name: flet.Switch examples: ../../examples/controls/switch example_images: ../test-images/examples/material/golden/macos/switch -example_media: ../examples/controls/switch/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic switch and disabled switch") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/switch) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="320", demo_width="100%") }} ### Handling change events -```python ---8<-- "{{ examples }}/handling_events.py" -``` - -{{ image(example_media + "/handling_events.gif", alt="handling-events", width="80%") }} +{{ code_and_demo(examples + "/handling_events.py", demo_height="340", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/tabs/index.md b/sdk/python/packages/flet/docs/controls/tabs/index.md index 0b5cdd47ad..7f634fae0b 100644 --- a/sdk/python/packages/flet/docs/controls/tabs/index.md +++ b/sdk/python/packages/flet/docs/controls/tabs/index.md @@ -1,48 +1,31 @@ --- class_name: flet.Tabs examples: ../../examples/controls/tabs -example_images: ../../examples/controls/tabs/media --- -# Tabs - {{ class_summary(class_name) }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/tabs) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.gif", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Nesting tabs -```python ---8<-- "{{ examples }}/nested.py" -``` +{{ code_and_demo(examples + "/nested.py", demo_height="420", demo_width="100%") }} ### Dynamic tab addition -```python ---8<-- "{{ examples }}/dynamic-tab-addition.py" -``` +{{ code_and_demo(examples + "/dynamic_tab_addition.py", demo_height="420", demo_width="100%") }} ### Custom indicator -```python ---8<-- "{{ examples }}/custom-indicator.py" -``` +{{ code_and_demo(examples + "/custom_indicator.py", demo_height="420", demo_width="100%") }} ### Programmatical Tab switch -```python ---8<-- "{{ examples }}/move-to.py" -``` +{{ code_and_demo(examples + "/move_to.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/text.md b/sdk/python/packages/flet/docs/controls/text.md index 9d4a4edb54..91df2ef27c 100644 --- a/sdk/python/packages/flet/docs/controls/text.md +++ b/sdk/python/packages/flet/docs/controls/text.md @@ -2,67 +2,35 @@ class_name: flet.Text examples: ../../examples/controls/text example_images: ../test-images/examples/core/golden/macos/text -example_media: ../examples/controls/text/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic Text control") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/displays/text) - ### Custom text styles -```python ---8<-- "{{ examples }}/custom_styles.py" -``` - -{{ image(example_media + "/custom_styles.gif", alt="custom-styles", width="80%") }} - +{{ code_and_demo(examples + "/custom_styles.py", demo_height="420", demo_width="100%") }} ### Pre-defined theme text styles -```python ---8<-- "{{ examples }}/text_theme_styles.py" -``` - -{{ image(example_media + "/text_theme_styles.png", alt="text-theme-styles", width="80%") }} - +{{ code_and_demo(examples + "/text_theme_styles.py", demo_height="420", demo_width="100%") }} ### Font with variable weight -```python ---8<-- "{{ examples }}/variable_font_weight.py" -``` - -{{ image(example_media + "/variable_font_weight.gif", alt="variable-font-weight", width="80%") }} - +{{ code_and_demo(examples + "/variable_font_weight.py", demo_height="420", demo_width="100%") }} ### Basic rich text example -```python ---8<-- "{{ examples }}/rich_text_basic.py" -``` - -{{ image(example_media + "/rich_text_basic.png", alt="rich-text-basic", width="80%") }} - +{{ code_and_demo(examples + "/rich_text_basic.py", demo_height="420", demo_width="100%") }} ### Rich text with borders and stroke -```python ---8<-- "{{ examples }}/rich_text_border_stroke.py" -``` - -{{ image(example_media + "/rich_text_border_stroke.png", alt="rich-text-border-stroke", width="80%") }} - +{{ code_and_demo(examples + "/rich_text_border_stroke.py", demo_height="420", demo_width="100%") }} ### Rich text with gradient -```python ---8<-- "{{ examples }}/rich_text_gradient.py" -``` - -{{ image(example_media + "/rich_text_gradient.png", alt="rich-text-gradient", width="80%") }} +{{ code_and_demo(examples + "/rich_text_gradient.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/textbutton.md b/sdk/python/packages/flet/docs/controls/textbutton.md index d82d0ff6ac..33cf9d8d19 100644 --- a/sdk/python/packages/flet/docs/controls/textbutton.md +++ b/sdk/python/packages/flet/docs/controls/textbutton.md @@ -8,42 +8,22 @@ example_images: ../test-images/examples/material/golden/macos/text_button ## Examples -[Live example](https://flet-controls-gallery.fly.dev/buttons/textbutton) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Icons -```python ---8<-- "{{ examples }}/icons.py" -``` - -{{ image(example_images + "/icons.png", alt="icons", width="80%") }} +{{ code_and_demo(examples + "/icons.py", demo_height="420", demo_width="100%") }} ### Handling clicks -```python ---8<-- "{{ examples }}/handling_clicks.py" -``` - -{{ image(example_images + "/handling_clicks.png", alt="handling-clicks", width="80%") }} - +{{ code_and_demo(examples + "/handling_clicks.py", demo_height="420", demo_width="100%") }} ### Custom content -```python ---8<-- "{{ examples }}/custom_content.py" -``` - -{{ image(example_images + "/custom_content.png", alt="custom-content", width="80%") }} +{{ code_and_demo(examples + "/custom_content.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/textfield.md b/sdk/python/packages/flet/docs/controls/textfield.md index 20529fb418..75e82ecdc8 100644 --- a/sdk/python/packages/flet/docs/controls/textfield.md +++ b/sdk/python/packages/flet/docs/controls/textfield.md @@ -2,84 +2,47 @@ class_name: flet.TextField examples: ../../examples/controls/text_field example_images: ../test-images/examples/material/golden/macos/textfield -example_media: ../examples/controls/text_field/media --- {{ class_summary(class_name, example_images + "/image_for_docs.png", image_caption="Basic TextField") }} ## Examples -[Live example](https://flet-controls-gallery.fly.dev/input/textfield) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_media + "/basic.gif", alt="basic", width="80%") }} - +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Handling change events -```python ---8<-- "{{ examples }}/handling_change_events.py" -``` - -{{ image(example_media + "/handling_change_events.gif", alt="handling-change-events", width="80%") }} +{{ code_and_demo(examples + "/handling_change_events.py", demo_height="420", demo_width="100%") }} ### Handling selection changes -```python ---8<-- "{{ examples }}/selection_change.py" -``` +{{ code_and_demo(examples + "/selection_change.py", demo_height="420", demo_width="100%") }} ### Password with reveal button -```python ---8<-- "{{ examples }}/password.py" -``` - -{{ image(example_media + "/password.gif", alt="password", width="80%") }} - +{{ code_and_demo(examples + "/password.py", demo_height="420", demo_width="100%") }} ### Multiline fields -```python ---8<-- "{{ examples }}/multiline.py" -``` - -{{ image(example_media + "/multiline.gif", alt="multiline", width="80%") }} - +{{ code_and_demo(examples + "/multiline.py", demo_height="420", demo_width="100%") }} ### Underlined and borderless TextFields -```python ---8<-- "{{ examples }}/underlined_and_borderless.py" -``` - -{{ image(example_media + "/underlined_and_borderless.gif", alt="underlined-and-borderless", width="80%") }} - +{{ code_and_demo(examples + "/underlined_and_borderless.py", demo_height="420", demo_width="100%") }} ### Setting prefixes and suffixes -```python ---8<-- "{{ examples }}/prefix_and_suffix.py" -``` - -{{ image(example_media + "/prefix_and_suffix.gif", alt="prefix-and-suffix", width="80%") }} - +{{ code_and_demo(examples + "/prefix_and_suffix.py", demo_height="420", demo_width="100%") }} ### Styled TextField -```python ---8<-- "{{ examples }}/styled.py" -``` +{{ code_and_demo(examples + "/styled.py", demo_height="420", demo_width="100%") }} ### Custom label, hint, helper, and counter texts and styles -```python ---8<-- "{{ examples }}/label_hint_helper_counter.py" -``` +{{ code_and_demo(examples + "/label_hint_helper_counter.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/timepicker.md b/sdk/python/packages/flet/docs/controls/timepicker.md index e1b1c28887..fbaf5dd4f7 100644 --- a/sdk/python/packages/flet/docs/controls/timepicker.md +++ b/sdk/python/packages/flet/docs/controls/timepicker.md @@ -8,23 +8,13 @@ example_images: ../test-images/examples/material/golden/macos/time_picker ## Examples -[Live example](https://flet-controls-gallery.fly.dev/dialogs/timepicker) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} ### Hour Formats -```python ---8<-- "{{ examples }}/hour_formats.py" -``` - -{{ image(example_images + "/hour_formats.gif", width="80%") }} +{{ code_and_demo(examples + "/hour_formats.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/transparentpointer.md b/sdk/python/packages/flet/docs/controls/transparentpointer.md index 373ead9eff..6430868c10 100644 --- a/sdk/python/packages/flet/docs/controls/transparentpointer.md +++ b/sdk/python/packages/flet/docs/controls/transparentpointer.md @@ -9,8 +9,7 @@ examples: ../../examples/controls/transparent_pointer ## Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} + {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/verticaldivider.md b/sdk/python/packages/flet/docs/controls/verticaldivider.md index fc5a776b7a..8bd982cafd 100644 --- a/sdk/python/packages/flet/docs/controls/verticaldivider.md +++ b/sdk/python/packages/flet/docs/controls/verticaldivider.md @@ -8,15 +8,9 @@ example_images: ../test-images/examples/core/golden/macos/vertical_divider ## Examples -[Live example](https://flet-controls-gallery.fly.dev/layout/verticaldivider) - ### Basic Example -```python ---8<-- "{{ examples }}/basic.py" -``` - -{{ image(example_images + "/basic.png", alt="basic", width="80%") }} +{{ code_and_demo(examples + "/basic.py", demo_height="420", demo_width="100%") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/controls/windowdragarea.md b/sdk/python/packages/flet/docs/controls/windowdragarea.md index 2ced1c493d..1f0c42c026 100644 --- a/sdk/python/packages/flet/docs/controls/windowdragarea.md +++ b/sdk/python/packages/flet/docs/controls/windowdragarea.md @@ -10,11 +10,7 @@ example_images: ../test-images/examples/core/golden/macos/window_drag_area ### No frame window -```python ---8<-- "{{ examples }}/no_frame_window.py" -``` - -{{ image(example_images + "/no_frame_window.png", alt="no-frame-window", width="80%") }} +{{ code(examples + "/no_frame_window.py") }} {{ class_members(class_name) }} diff --git a/sdk/python/packages/flet/docs/cookbook/adaptive-apps.md b/sdk/python/packages/flet/docs/cookbook/adaptive-apps.md index 580d0cbef7..52425ef355 100644 --- a/sdk/python/packages/flet/docs/cookbook/adaptive-apps.md +++ b/sdk/python/packages/flet/docs/cookbook/adaptive-apps.md @@ -108,153 +108,66 @@ Below is the list of adaptive Material controls and their matching Cupertino con - [:octicons-arrow-right-24: `AlertDialog`][flet.AlertDialog] - --- - ![AlertDialog](../examples/controls/alert_dialog/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoAlertDialog`][flet.CupertinoAlertDialog] - --- - ![CupertinoAlertDialog](../examples/controls/cupertino_alert_dialog/media/adaptive.png){width="85%"} - - [:octicons-arrow-right-24: `Any button in Dialog actions`][flet.Button] - --- - ![Dialog actions](../examples/controls/alert_dialog/media/adaptive_dialog_action.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoDialogAction`][flet.CupertinoDialogAction] - --- - ![CupertinoDialogAction](../examples/controls/cupertino_alert_dialog/media/adaptive_dialog_action.png){width="85%"} - - [:octicons-arrow-right-24: `AppBar`][flet.AppBar] - --- - ![AppBar](../examples/controls/app_bar/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoAppBar`][flet.CupertinoAppBar] - --- - ![CupertinoAppBar](../examples/controls/cupertino_app_bar/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `NavigationBar`][flet.NavigationBar] - --- - ![NavigationBar](../examples/controls/navigation_bar/media/adaptive.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoNavigationBar`][flet.CupertinoNavigationBar] - --- - ![CupertinoNavigationBar](../examples/controls/cupertino_navigation_bar/media/adaptive.png){width="85%"} - - [:octicons-arrow-right-24: `ListTile`][flet.ListTile] - --- - ![ListTile](../examples/controls/list_tile/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoListTile`][flet.CupertinoListTile] - --- - ![CupertinoListTile](../examples/controls/cupertino_list_tile/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `TextField`][flet.TextField] - --- - ![TextField](../examples/controls/text_field/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `CupertinoTextField`][flet.CupertinoTextField] - --- - ![CupertinoTextField](../examples/controls/cupertino_text_field/media/index.png){width="85%"} - - [:octicons-arrow-right-24: `Checkbox`][flet.Checkbox] - --- - ![Checkbox](../examples/controls/checkbox/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoCheckbox`][flet.CupertinoCheckbox] - --- - ![CupertinoCheckbox](../examples/controls/cupertino_checkbox/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `Slider`][flet.Slider] - --- - ![Slider](../examples/controls/slider/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoSlider`][flet.CupertinoSlider] - --- - ![CupertinoSlider](../examples/controls/cupertino_slider/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `Switch`][flet.Switch] - --- - ![Switch](../examples/controls/switch/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoSwitch`][flet.CupertinoSwitch] - --- - ![CupertinoSwitch](../examples/controls/cupertino_switch/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `Radio`][flet.Radio] - --- - ![Radio](../examples/controls/radio/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoRadio`][flet.CupertinoRadio] - --- - ![CupertinoRadio](../examples/controls/cupertino_radio/media/index.png){width="45%"} - - [:octicons-arrow-right-24: `FilledButton`][flet.FilledButton] - --- - ![FilledButton](../examples/controls/filled_button/media/adaptive.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoFilledButton`][flet.CupertinoFilledButton] - --- - ![CupertinoFilledButton](../examples/controls/cupertino_filled_button/media/adaptive.png){width="45%"} - - [:octicons-arrow-right-24: `FilledTonalButton`][flet.FilledTonalButton] - --- - ![FilledTonalButton](../examples/controls/filled_tonal_button/media/adaptive.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoButton`][flet.CupertinoButton] - --- - ![CupertinoButtonTonal](../examples/controls/cupertino_button/media/adaptive_tonal_button.png){width="45%"} - - [:octicons-arrow-right-24: `IconButton`][flet.IconButton] - --- - ![IconButton](../examples/controls/icon_button/media/adaptive.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoButton`][flet.CupertinoButton] - --- - ![CupertinoIconButton](../examples/controls/cupertino_button/media/adaptive_icon_button.png){width="45%"} - - [:octicons-arrow-right-24: `Button`][flet.Button] - ![Button](../examples/controls/button/media/adaptive.png){width="45%"} - --- [:octicons-arrow-right-24: `OutlinedButton`][flet.OutlinedButton] - ![OutlinedButton](../examples/controls/outlined_button/media/adaptive.png){width="45%"} - --- [:octicons-arrow-right-24: `TextButton`][flet.TextButton] - ![TextButton](../examples/controls/text_button/media/adaptive.png){width="45%"} - - [:octicons-arrow-right-24: `CupertinoButton`][flet.CupertinoButton] - --- - ![CupertinoButton](../examples/controls/cupertino_button/media/adaptive.png){width="45%"} - /// @@ -330,12 +243,12 @@ Now the `NavigationBar` and icons within it will look like different on Android - **iOS** --- - ![CupertinoNavigationBar](../examples/controls/navigation_bar/media/adaptive.png){width="90%"} + ![CupertinoNavigationBar](../assets/cookbook/adaptive-apps/navigation-bar-cupertino.png){width="90%"} - **Android** --- - ![CupertinoNavigationBar](../examples/controls/navigation_bar/media/adaptive.png){width="90%"} + ![CupertinoNavigationBar](../assets/cookbook/adaptive-apps/navigation-bar-material.png){width="90%"} diff --git a/sdk/python/packages/flet/docs/cookbook/animations.md b/sdk/python/packages/flet/docs/cookbook/animations.md index 0dcbd28618..d81175fa89 100644 --- a/sdk/python/packages/flet/docs/cookbook/animations.md +++ b/sdk/python/packages/flet/docs/cookbook/animations.md @@ -7,7 +7,7 @@ Animation produces interpolated values between the old and the new value over th By default, the animation is *linearly* increasing the animation value, however, a *curve* can be applied to the animation which changes the value according to the provided curve. -For example, `AnimationCurve.EASE_OUT_CUBIC` curve increases the animation value quickly at the +For example, [`AnimationCurve.EASE_OUT_CUBIC`][flet.AnimationCurve.EASE_OUT_CUBIC] curve increases the animation value quickly at the beginning of the animation and then slows down until the target value is reached: