Skip to main content

Flet v0.26.0 Release Announcement

· 4 min read
Feodor Fitsner
Flet founder and developer

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.

How to upgrade

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.

Extensibility changes

Built-in extensions

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",
]

User extensions

Flet now makes it easy to create and build projects with your custom controls based on Flutter widgets or Flutter 3rd-party packages:

  1. Create new virtual enviroment and install Flet there.

  2. 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.

  1. Build your app.

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.

Development environment configuration

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.

Flutter 3.27

Flet has been migrated to Flutter SDK 3.27. See this pull request for new and updated control properties.

Python 3.9

Flet 0.26.0 requires Python 3.9 or later. Python 3.8 has reached EOL.

Other changes

  • Optional on-demand creation of ListView.controls (#3931)
  • Reset InteractiveViewer tranformations (#4391)
  • Passthrough of mouse events from main window to other applications (#1438)
  • Implemented Window.ignore_mouse_events (#4465)
  • Adding Google/Android TV platform support (#4581)
  • Remove Optional[] from predefined typing *Values (#4702)
  • Throttle InteractiveViewer update events (#4704)
  • Remove v0.26.0-related deprecations (#4456)

Bug fixes

  • Fixed: Update project_dependencies.py (#4459)
  • Fixed: SafeArea object has no attribute _SafeArea__minimum (#4500)
  • Fixed: Tooltip corruption in Segment and BarChartRod on update() (#4525)
  • Fixed: Setting CheckBox.border_side.stroke_align to an Enum fails (#4526)
  • Fixed: ControlState should be resolved based on user-defined order (#4556)
  • Fixed: broken Dismissible.dismiss_direction (#4557)
  • Fixed: Fix Rive not updating (#4582)
  • Fixed: DatePicker regression with first and last dates (#4661)
  • flet build command: Copy flutter-packages, support for platform-specific dependencies (#4667)
  • Fixed: CupertinoBottomSheet applies a red color and yellow underline to Text content (#4673)
  • Fixed: setting ButtonTheme displays a grey screen (#4731)
  • Fixed: Textfield input border color considers user-specified border_color property (#4735)
  • Fixed: make Tooltip.message a required parameter (#4736)

Conclusion

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! 👾