website/blog/2025-01-24-flet-v-0-26-release-announcement.md
The Flet 0.26.0 release is here, featuring a significant update to the extensibility approach!
In summary, a Flet extension is now a single Python package that bundles both Python and Flutter code. This package can be part of your Flet project or hosted in a public Git repository or PyPI.
Built-in Flet extensions, such as Audio, Video, and Map, have been moved to their own repositories. You’re welcome to fork these extensions to create your own or contribute to Flet! These extensions have been published to PyPI, making them easy to include in your Flet app. To use them, simply add the desired extensions to the dependencies section of your pyproject.toml file.
Run the following command to upgrade Flet:
pip install 'flet[all]' --upgrade
:::note
[all] is an "extra" specifier which tells pip to install or upgrade all flet packages: flet, flet-cli, flet-desktop and flet-web.
:::
Bump flet package version to 0.26.0 (or remove it at all to use the latest) in your pyproject.toml.
Flet controls based on 3rd-party Flutter packages that used to be a part of Flet repository, now have been moved to separate repos and published on pypi:
To use a built-in Flet extension in your project, add it to the dependencies section of your pyproject.toml file, for example:
dependencies = [
"flet-audio",
"flet>=0.26.0",
]
Flet now makes it easy to create and build projects with your custom controls based on Flutter widgets or Flutter 3rd-party packages:
Create new virtual environment and install Flet there.
Create new Flet extension project from template:
flet create --template extension --project-name my-control
A project with new MyControl control will be created. The control is just a Flutter Text widget with a single text property.
Flet project created from extension template has examples/my_control_example folder with the example app.
When in the folder where your pyproject.toml for the app is, run flet build command, for example, for macOS:
flet build macos -v
Run the app and see the new custom Flet Control:
open build/macos/my-control-example.app
Read more about how to customise your extension here.
To enhance the developer experience with the flet build command, Flet 0.26.0 ensures that the correct versions of Flutter SDK, Java (JDK), and Android SDK are installed. If any of these are missing or outdated, it automatically installs them for you.
You still need to install Visual Studio 2022 yourself if you're building a Flet app for Windows, or Xcode if you're building for iOS or macOS.
In the next releases we are going to introduce automatic configuration and startup of Android and iOS emulators.
Flet has been migrated to Flutter SDK 3.27. See this pull request for new and updated control properties.
Flet 0.26.0 requires Python 3.9 or later. Python 3.8 has reached EOL.
ListView.controls (#3931)InteractiveViewer transformations (#4391)Window.ignore_mouse_events (#4465)Optional[] from predefined typing *Values (#4702)InteractiveViewer update events (#4704)SafeArea object has no attribute _SafeArea__minimum (#4500)Segment and BarChartRod on update() (#4525)CheckBox.border_side.stroke_align to an Enum fails (#4526)ControlState should be resolved based on user-defined order (#4556)Dismissible.dismiss_direction (#4557)DatePicker regression with first and last dates (#4661)flet build command: Copy flutter-packages, support for platform-specific dependencies (#4667)CupertinoBottomSheet applies a red color and yellow underline to Text content (#4673)ButtonTheme displays a grey screen (#4731)Textfield input border color considers user-specified border_color property (#4735)Tooltip.message a required parameter (#4736)Upgrade to Flet 0.26.0, test your apps and let us know how you find the new features we added.
If you have any questions, please join Flet Discord server or create a new thread on Flet GitHub discussions.
Happy Flet-ing! 👾