Releases: flet-dev/flet
Releases · flet-dev/flet
v0.85.1
Bug fixes
- Fix
TooltipTheme.decorationso it applies to controls usingft.Tooltip(...)when the tooltip does not explicitly setdecorationorbgcolor(#6432, #6482) by @ndonkoHenri. - Fix
flet-geolocator.Geolocatorreliability on web and desktop:get_last_known_position()no longer crashes withTypeError: argument after ** must be a mapping, not NoneTypeand now returnsOptional[GeolocatorPosition];get_current_position()no longer hangs forever on web (Dart-side workaround for the upstreamgeolocator_web4.1.3inMicroseconds/inMillisecondstimeout typo) and uses sensible web defaults (time_limit: 30s,maximum_age: 5m); the previously-droppedconfigurationargument now actually reachesgetCurrentPositionon the Dart side; the position stream is gated behind a registeredon_position_change/on_errorhandler (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 asRuntimeErrorwithout the defaultException:prefix (#6487) by @FeodorFitsner. - Fix PEP 508 markers on
flet'soauthlib/httpxdeps not actually excluding those packages under Pyodide: theflet build webpackage platform has been renamed fromPyodidetoEmscriptento matchplatform.system()inside the Pyodide runtime, and the markers now useplatform_system != 'Emscripten', so the exclusion works both viaflet buildand a directmicropip.install("flet")in a Pyodide REPL. Requiresserious_python>= 1.0.0, which is now pinned in theflet buildtemplate (#6492) by @FeodorFitsner.
v0.85.0
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; andVideo.on_position_change/Video.on_duration_changeevents (#6463) by @ndonkoHenri. - Add declarative
ft.Routercomponent for@ft.componentapps with nested routes, layout routes with outlets, dynamic segments, optional segments, splats, custom regex constraints, data loaders, active link detection, authentication patterns, andmanage_views=Truemode for view-stack navigation with swipe-back gestures andAppBarback button on mobile (#6406) by @FeodorFitsner. - Add
ft.use_dialog()hook for declarative dialog management from within@ft.componentfunctions, with frozen-diff reactive updates and automatic open/close lifecycle (#6335) by @FeodorFitsner. - Add
scrollable,pin_leading_to_top, andpin_trailing_to_bottomproperties toNavigationRailfor scrollable content with optional pinned leading/trailing controls (#1923, #6356) by @ndonkoHenri. - Add scroll support to
ResponsiveRowfor responsive layouts whose content exceeds the available height (#2590, #6417) by @ndonkoHenri. - Add
issuesproperty toCodeEditor(along withIssueandIssueTypetypes) 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.labelaccept custom controls and addNavigationDrawerTheme.icon_theme(#6379, #6395) by @ndonkoHenri. - Add
local_positionandglobal_positiontoDragTargetEvent, deprecatingx,y, andoffset(#6387, #6401) by @ndonkoHenri. - Added PCM16 streaming to
AudioRecorder, includingon_streamchunks and direct upload support viaAudioRecorderUploadSettings(#5858, #6423) by @ndonkoHenri. - Add
Page.theme_animation_stylefor customizing the duration and curve of the theme cross-fade betweenthemeanddark_theme(or disabling it withAnimationStyle.no_animation()), exposing Flutter'sMaterialApp.themeAnimationStyle(#6476) by @FeodorFitsner.
Bug fixes
- Fix control diffing for controls nested inside
@valuedataclass objects so they keep the nearest control parent/page context, and restore optional structured properties that are cleared toNoneand later set again (#6463) by @ndonkoHenri. - Fix
PageandViewvertical 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.Videocontrols by linkingmedia_kitvideo apps against mimalloc in run and build flows (#6164, #6416) by @ndonkoHenri. - Fix
flet buildandflet publishdependency parsing forproject.dependenciesand Poetry constraints with</<=, and add coverage for normalized requirement handling (#6332, #6340) by @td3447. - Fix
CodeEditorbackground not filling the entire area whenexpand=True(#6407) by @FeodorFitsner. - Handle unbounded width in
ResponsiveRowwith an explicit error, treat child controls withcol=0as hidden, and clarifyContainerexpansion behavior whenalignmentis set (#1951, #3805, #5209, #6354) by @ndonkoHenri. - Fix
find_platform_imageselecting incompatible icon formats (e.g..icnson Windows) by ranking glob results per target platform (#6381) by @HG-ha. - Fix
page.window.destroy()taking several seconds to close Windows desktop apps whenprevent_closeis enabled (#5459, #6428) by @ndonkoHenri. - Fix
Page.show_drawer(),close_drawer(), and root/top view accessors (appbar,drawer,navigation_bar,controls, ...) failing withTypeErrorunderPage.render_views()by unwrapping component-wrapped views and normalizing single-view returns (#6413, #6414) by @FeodorFitsner. - Fix
auto_scrollon scrollable controls silently doing nothing unlessscrollwas also explicitly set (#6397, #6404) by @ndonkoHenri. - Fix Flet web returning
index.htmlwith a200 OKfor missing asset files; requests for paths with a file extension other than.htmlnow return a proper404, while route-like paths still fall back toindex.htmlfor SPA routing (#6425) by @ndonkoHenri. - Fix
Lottiefailing to load local asset files on Windows desktop (and unreliably on other desktop platforms), so animations referenced bysrc="file.json"from the app'sassets/directory now display correctly (#6386, #6426) by @ndonkoHenri. - Fix
Page.on_resizeandPage.on_media_changenot firing after mobile orientation changes (#6457, #6423) by @ndonkoHenri. - Fix
flet packdesktop packaging so Windows and Linux bundles include the expected client archive, and Windows taskbar pins point to the packed app instead of the cachedflet.exe(#5151, #6403) by @ndonkoHenri. - Fix environment variable priority in
flet buildtemplate: inherit fromPlatform.environmentand useputIfAbsentfor FLET_* variables so pre-set system env vars are not overwritten (#6394) by @Bahtya. - Fix
NavigationBarDestination.selected_iconrendering wrongly when provided as anIconcontrol (#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.spotsreturning undecoded MessagePack extension values instead ofLineChartEventSpotobjects (#6443, #6468) by @ndonkoHenri. - Fix
LineChart(and other charts) silently dropping customChartAxisLabelentries whosevaluematched 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, passdata:/blob:URIs through the asset resolver unchanged, preserve origin-relative semantics whenassets_diris unset, and add awindow.flet.assetsDirJS-interop bridge so embedding hosts can supplyassets_dirto the top-levelFletApp(#6470) by @FeodorFitsner. - Fix unbounded browser memory growth in
MatplotlibCharton Flutter web (CanvasKit/WASM) during animations by replacing theCanvas+capture()rendering path with a dedicatedMatplotlibChartCanvaswidget 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
Durationfields (and otherint-typed properties) silently decoding to0when given a Pythonfloat(e.g.Duration(seconds=2.0)causingPage.theme_animation_styleto end instantly) by coercingdoubletointin the Dart-sideparseInt(#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...
v0.85.0.dev4
What's Changed
- perf(flet-charts): faster MatplotlibChart rendering on native, simpler Python loop by @FeodorFitsner in #6479
- fix:
Durationfields decode to 0 when passed as float (#6478) by @FeodorFitsner in #6480
Full Changelog: v0.85.0.dev3...v0.85.0.dev4
v0.85.0.dev3
What's Changed
- feat(
flet-audio-recorder): Add streaming and upload support toAudioRecorderby @ndonkoHenri in #6423 - fix: preserve vertical alignment in scrollable
PageandViewby @ndonkoHenri in #6450 - fix: resolve absolute-path
srcagainstassets_diron web by @FeodorFitsner in #6470 - feat(
flet-video): support direct mutation ofplaylist, frame screenshots and video-controls configuration by @ndonkoHenri in #6463 - fix:
NavigationBarDestination.selected_iconrenders wrongly when set to aControlby @ndonkoHenri in #6468 - fix(flet-charts): prevent unbounded browser memory growth in MatplotlibChart by @FeodorFitsner in #6473
- feat: add
Page.theme_animation_stylefor customizing theme transitions by @FeodorFitsner in #6476
Full Changelog: v0.85.0.dev2...v0.85.0.dev3
v0.85.0.dev2
What's Changed
- chore: bump serious_python to 0.9.12 in build template by @FeodorFitsner in #6461
Full Changelog: v0.85.0.dev1...v0.85.0.dev2
v0.85.0.dev1
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 withcol=0by @ndonkoHenri in #6354 - feat: add issues property to CodeEditor for Python-side analysis by @FeodorFitsner in #6407
- fix:
ScrollableControl.auto_scrollnot working whenscrollproperty is not explicitly set by @ndonkoHenri in #6404 - feat: add
local_position/global_positiontoDragTargetEventby @ndonkoHenri in #6401 - feat: make
NavigationDrawerDestination.labelaccept 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.utilsto 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.exeby @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_radiushelpers by @ndonkoHenri in #6425 - feat: add scroll support to
ResponsiveRowby @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
- @brunobrown made their first contribution in #6347
- @HG-ha made their first contribution in #6381
- @Bahtya made their first contribution in #6394
Full Changelog: v0.85.0.dev0...v0.85.0.dev1
v0.85.0.dev0
What's Changed
- Add declarative reorderable list example by @FeodorFitsner in #6374
- Very minor correction in calculator tutorial by @GrCOTE7 in #6373
- Update screenshot sizes for Control docs by @InesaFitsner in #6378
- fix: Update line count in To-Do app tutorial by @GrCOTE7 in #6375
- fix(flet-cli): correct dependency parsing (#6332) by @FeodorFitsner in #6376
- feat: add scrollable and pinned leading/trailing support to
NavigationRailby @ndonkoHenri in #6356 - feat: add use_dialog hook for declarative dialog management by @FeodorFitsner in #6335
- Fix 0.85.0 integration tests by @FeodorFitsner in #6396
New Contributors
Full Changelog: v0.84.0...v0.85.0.dev0
v0.84.0
v0.84.0.dev0
What's Changed
- Migrate Flet docs from MkDocs to Docusaurus by @FeodorFitsner in #6359
- Migrate examples to projects by @InesaFitsner in #6355
- fix: flet pack fails on macOS after move to GitHub releases by @FeodorFitsner in #6361
- Fix integration tests for v0.84.0 by @FeodorFitsner in #6365
- Blog post for Flet 0.84.0 release by @FeodorFitsner in #6364
Full Changelog: v0.83.1...v0.84.0.dev0
v0.83.1
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
- @Krishnachaitanyakc made their first contribution in #6344
Full Changelog: v0.83.0...v0.83.1