Skip to content

Releases: flet-dev/flet

v0.85.1

13 May 16:35
88ac763

Choose a tag to compare

Bug fixes

  • Fix TooltipTheme.decoration so it applies to controls using ft.Tooltip(...) when the tooltip does not explicitly set decoration or bgcolor (#6432, #6482) by @ndonkoHenri.
  • Fix flet-geolocator.Geolocator reliability on web and desktop: get_last_known_position() no longer crashes with TypeError: argument after ** must be a mapping, not NoneType and now returns Optional[GeolocatorPosition]; get_current_position() no longer hangs forever on web (Dart-side workaround for the upstream geolocator_web 4.1.3 inMicroseconds/inMilliseconds timeout typo) and uses sensible web defaults (time_limit: 30s, maximum_age: 5m); the previously-dropped configuration argument now actually reaches getCurrentPosition on the Dart side; the position stream is gated behind a registered on_position_change/on_error handler (with cancel-on-update to prevent leaks); and platform exceptions (LocationServiceDisabledException, PermissionDeniedException, PermissionDefinitionsNotFoundException, PermissionRequestInProgressException, PositionUpdateException, TimeoutException) are now translated into actionable error messages and surfaced to Python as RuntimeError without the default Exception: prefix (#6487) by @FeodorFitsner.
  • Fix PEP 508 markers on flet's oauthlib/httpx deps not actually excluding those packages under Pyodide: the flet build web package platform has been renamed from Pyodide to Emscripten to match platform.system() inside the Pyodide runtime, and the markers now use platform_system != 'Emscripten', so the exclusion works both via flet build and a direct micropip.install("flet") in a Pyodide REPL. Requires serious_python >= 1.0.0, which is now pinned in the flet build template (#6492) by @FeodorFitsner.

v0.85.0

08 May 22:15
b1499da

Choose a tag to compare

What's Changed

New features and improvements

  • Add configurable built-in, custom, hidden, and normal/fullscreen-specific controls to flet-video; Video.take_screenshot() for capturing video frames; and Video.on_position_change/Video.on_duration_change events (#6463) by @ndonkoHenri.
  • Add declarative ft.Router component for @ft.component apps with nested routes, layout routes with outlets, dynamic segments, optional segments, splats, custom regex constraints, data loaders, active link detection, authentication patterns, and manage_views=True mode for view-stack navigation with swipe-back gestures and AppBar back button on mobile (#6406) by @FeodorFitsner.
  • Add ft.use_dialog() hook for declarative dialog management from within @ft.component functions, with frozen-diff reactive updates and automatic open/close lifecycle (#6335) by @FeodorFitsner.
  • Add scrollable, pin_leading_to_top, and pin_trailing_to_bottom properties to NavigationRail for scrollable content with optional pinned leading/trailing controls (#1923, #6356) by @ndonkoHenri.
  • Add scroll support to ResponsiveRow for responsive layouts whose content exceeds the available height (#2590, #6417) by @ndonkoHenri.
  • Add issues property to CodeEditor (along with Issue and IssueType types) for displaying code analysis error markers in the gutter, with analysis performed on the Python side (#6407) by @FeodorFitsner.
  • Add Page.pop_views_until() to pop multiple views and return a result to the destination view (#6326, #6347) by @brunobrown.
  • Make NavigationDrawerDestination.label accept custom controls and add NavigationDrawerTheme.icon_theme (#6379, #6395) by @ndonkoHenri.
  • Add local_position and global_position to DragTargetEvent, deprecating x, y, and offset (#6387, #6401) by @ndonkoHenri.
  • Added PCM16 streaming to AudioRecorder, including on_stream chunks and direct upload support via AudioRecorderUploadSettings (#5858, #6423) by @ndonkoHenri.
  • Add Page.theme_animation_style for customizing the duration and curve of the theme cross-fade between theme and dark_theme (or disabling it with AnimationStyle.no_animation()), exposing Flutter's MaterialApp.themeAnimationStyle (#6476) by @FeodorFitsner.

Bug fixes

  • Fix control diffing for controls nested inside @value dataclass objects so they keep the nearest control parent/page context, and restore optional structured properties that are cleared to None and later set again (#6463) by @ndonkoHenri.
  • Fix Page and View vertical centering when scrolling is enabled, including hidden scrollbars, so short content remains centered in the viewport (#6446, #6450) by @ndonkoHenri.
  • Reduce Linux memory retention when repeatedly removing flet_video.Video controls by linking media_kit video apps against mimalloc in run and build flows (#6164, #6416) by @ndonkoHenri.
  • Fix flet build and flet publish dependency parsing for project.dependencies and Poetry constraints with </<=, and add coverage for normalized requirement handling (#6332, #6340) by @td3447.
  • Fix CodeEditor background not filling the entire area when expand=True (#6407) by @FeodorFitsner.
  • Handle unbounded width in ResponsiveRow with an explicit error, treat child controls with col=0 as hidden, and clarify Container expansion behavior when alignment is set (#1951, #3805, #5209, #6354) by @ndonkoHenri.
  • Fix find_platform_image selecting incompatible icon formats (e.g. .icns on Windows) by ranking glob results per target platform (#6381) by @HG-ha.
  • Fix page.window.destroy() taking several seconds to close Windows desktop apps when prevent_close is enabled (#5459, #6428) by @ndonkoHenri.
  • Fix Page.show_drawer(), close_drawer(), and root/top view accessors (appbar, drawer, navigation_bar, controls, ...) failing with TypeError under Page.render_views() by unwrapping component-wrapped views and normalizing single-view returns (#6413, #6414) by @FeodorFitsner.
  • Fix auto_scroll on scrollable controls silently doing nothing unless scroll was also explicitly set (#6397, #6404) by @ndonkoHenri.
  • Fix Flet web returning index.html with a 200 OK for missing asset files; requests for paths with a file extension other than .html now return a proper 404, while route-like paths still fall back to index.html for SPA routing (#6425) by @ndonkoHenri.
  • Fix Lottie failing to load local asset files on Windows desktop (and unreliably on other desktop platforms), so animations referenced by src="file.json" from the app's assets/ directory now display correctly (#6386, #6426) by @ndonkoHenri.
  • Fix Page.on_resize and Page.on_media_change not firing after mobile orientation changes (#6457, #6423) by @ndonkoHenri.
  • Fix flet pack desktop packaging so Windows and Linux bundles include the expected client archive, and Windows taskbar pins point to the packed app instead of the cached flet.exe (#5151, #6403) by @ndonkoHenri.
  • Fix environment variable priority in flet build template: inherit from Platform.environment and use putIfAbsent for FLET_* variables so pre-set system env vars are not overwritten (#6394) by @Bahtya.
  • Fix NavigationBarDestination.selected_icon rendering wrongly when provided as an Icon control (#6460, #6468) by @ndonkoHenri.
  • Fix 3- and 4-digit hex color shorthand (e.g. #c00, #fc00) rendering as invisible by expanding them to their full 6/8-digit forms (#6419, #6421) by @ndonkoHenri.
  • Fix LineChartEvent.spots returning undecoded MessagePack extension values instead of LineChartEventSpot objects (#6443, #6468) by @ndonkoHenri.
  • Fix LineChart (and other charts) silently dropping custom ChartAxisLabel entries whose value matched a tick only after floating-point rounding (e.g. 0.1, 0.2, 0.3) by switching label lookup to a tolerance-based comparison scaled to the axis interval (#6445, #6459) by @KangZhaoKui.
  • Fix absolute-path src (e.g. Image(src="/images/foo.svg")) breaking on web when the app is mounted at a non-root URL, pass data:/blob: URIs through the asset resolver unchanged, preserve origin-relative semantics when assets_dir is unset, and add a window.flet.assetsDir JS-interop bridge so embedding hosts can supply assets_dir to the top-level FletApp (#6470) by @FeodorFitsner.
  • Fix unbounded browser memory growth in MatplotlibChart on Flutter web (CanvasKit/WASM) during animations by replacing the Canvas + capture() rendering path with a dedicated MatplotlibChartCanvas widget that composites matplotlib diff frames in CPU memory; also fixes Safari async PNG decode (EncodingError: Loading error.), a render/figure.savefig() race that crashed the toolbar Download, and pan/zoom playback lag from buffered pointer events (#6473) by @FeodorFitsner.
  • Fix Duration fields (and other int-typed properties) silently decoding to 0 when given a Python float (e.g. Duration(seconds=2.0) causing Page.theme_animation_style to end instantly) by coercing double to int in the Dart-side parseInt (#6478, #6480) by @FeodorFitsner.

Documentation

  • Improve CrocoDocs API reference rendering with formatted signatures, modern type annotations, and cleaner cross-reference labels for extension packages ([#6442](ht...
Read more

v0.85.0.dev4

08 May 03:42
e0352ad

Choose a tag to compare

v0.85.0.dev4 Pre-release
Pre-release

What's Changed

Full Changelog: v0.85.0.dev3...v0.85.0.dev4

v0.85.0.dev3

07 May 19:24
843f0c0

Choose a tag to compare

v0.85.0.dev3 Pre-release
Pre-release

What's Changed

  • feat(flet-audio-recorder): Add streaming and upload support to AudioRecorder by @ndonkoHenri in #6423
  • fix: preserve vertical alignment in scrollable Page and View by @ndonkoHenri in #6450
  • fix: resolve absolute-path src against assets_dir on web by @FeodorFitsner in #6470
  • feat(flet-video): support direct mutation of playlist, frame screenshots and video-controls configuration by @ndonkoHenri in #6463
  • fix: NavigationBarDestination.selected_icon renders wrongly when set to a Control by @ndonkoHenri in #6468
  • fix(flet-charts): prevent unbounded browser memory growth in MatplotlibChart by @FeodorFitsner in #6473
  • feat: add Page.theme_animation_style for customizing theme transitions by @FeodorFitsner in #6476

Full Changelog: v0.85.0.dev2...v0.85.0.dev3

v0.85.0.dev2

03 May 20:26
3f16e72

Choose a tag to compare

v0.85.0.dev2 Pre-release
Pre-release

What's Changed

Full Changelog: v0.85.0.dev1...v0.85.0.dev2

v0.85.0.dev1

01 May 18:38
44f541b

Choose a tag to compare

v0.85.0.dev1 Pre-release
Pre-release

What's Changed

  • Docusaurus 3.10 upgrade with fast mode by @FeodorFitsner in #6389
  • feat: Page.pop_views_until() to pop multiple views and return a result to the destination view by @brunobrown in #6347
  • fix: select platform-compatible icon format in find_platform_image by @HG-ha in #6381
  • fix(ResponsiveRow): handle unbounded width and child controls with col=0 by @ndonkoHenri in #6354
  • feat: add issues property to CodeEditor for Python-side analysis by @FeodorFitsner in #6407
  • fix: ScrollableControl.auto_scroll not working when scroll property is not explicitly set by @ndonkoHenri in #6404
  • feat: add local_position/global_position to DragTargetEvent by @ndonkoHenri in #6401
  • feat: make NavigationDrawerDestination.label accept custom controls by @ndonkoHenri in #6395
  • fix: resolve component-wrapped views in Page root/top view accessors by @FeodorFitsner in #6414
  • chore: Move Linux build and client dependencies in flet.utils to further simplify CI workflow by @ndonkoHenri in #6383
  • fix: respect pre-set environment variables in build template by @Bahtya in #6394
  • fix(flet pack): Windows taskbar shortcut pointing to wrong .exe by @ndonkoHenri in #6403
  • fix: reduce Linux video memory retention with mimalloc linking by @ndonkoHenri in #6416
  • feat: add hot-reload watcher to CrocoDocs CLI by @ndonkoHenri in #6402
  • fix: avoid delay when page.window.destroy() closes Windows apps by @ndonkoHenri in #6428
  • fix(flet-lottie): local asset files not loading on Windows desktop by @ndonkoHenri in #6426
  • chore!: remove deprecated module-level margin/padding/border/border_radius helpers by @ndonkoHenri in #6425
  • feat: add scroll support to ResponsiveRow by @ndonkoHenri in #6417
  • fix(linux): link libpthread alongside mimalloc.o by @FeodorFitsner in #6435
  • Tests to generate screenshots/gifs for material controls examples. by @InesaFitsner in #6438
  • Add declarative Router with view-stack navigation by @FeodorFitsner in #6406
  • feat(flet-map): add image overlay support by @ndonkoHenri in #6421
  • fix(flet-charts): match axis labels with float tolerance by @FeodorFitsner in #6459
  • docs: improve CrocoDocs API signature and cross-reference rendering by @ndonkoHenri in #6442

New Contributors

Full Changelog: v0.85.0.dev0...v0.85.0.dev1

v0.85.0.dev0

08 Apr 20:48

Choose a tag to compare

v0.85.0.dev0 Pre-release
Pre-release

What's Changed

New Contributors

Full Changelog: v0.84.0...v0.85.0.dev0

v0.84.0

01 Apr 19:23
40d3e46

Choose a tag to compare

What's Changed

Full Changelog: v0.83.1...v0.84.0

v0.84.0.dev0

01 Apr 17:14

Choose a tag to compare

v0.84.0.dev0 Pre-release
Pre-release

What's Changed

Full Changelog: v0.83.1...v0.84.0.dev0

v0.83.1

29 Mar 18:29
48e1ee7

Choose a tag to compare

What's Changed

  • fix: replace deprecated delta_x/delta_y with local_delta.x/y in examples and docs by @Krishnachaitanyakc in #6344
  • fix: clear inherited validation rules for overridden dataclass fields by @ndonkoHenri in #6350

New Contributors

Full Changelog: v0.83.0...v0.83.1