← 文章 / 开源项目
flet 8小时前 · 2026-09-28 22:20:42 · 2 阅读

Flet 1.0 正式发布

Flet 1.0Flet 1.0

今天,我们正式发布了 Flet 1.0!🎉

四年多前,我们带着一个简单的理念推出了 Flet:任何懂 Python 的人都应该能轻松构建跨平台应用。

自那时起,这个理念随着你们构建的应用、分享的反馈以及做出的贡献而不断壮大。

如今,Flet 在 GitHub 上获得了超过 16,700 颗星,拥有 100 位贡献者,并在 PyPI 上下载量超过 9,000,000 次!我们已合并超过 1,000 个 Pull Requests,关闭了 2,800 个 Issues,我们的 Discord 社区也已成长至 6,000 多名成员。

上手也变得更简单了:Flet Studio 让你能在浏览器中借助其 AI 助手构建、探索和分享应用。如果你更习惯使用自己的编辑器,Flet MCP 服务器可以为你的 AI 编码助手提供 Flet API 的最新知识。

1.0 意味着什么​

Flet 1.0 意味着它已准备好用于构建生产级应用。

当我们宣布 Alpha 版本时,我们承诺要提升 Flet 的可靠性、改善文档并增加更多测试。从那以后,我们一直在履行这些承诺,以便你能放心地构建应用,并在 Flet 持续演进时保持应用的稳定运行。

测试、测试、再测试!​

为什么我们认为它准备好了?答案很大部分在于测试,从单独的 Python 函数一直覆盖到设备上运行的打包应用:

  • 框架单元测试 在 Python 3.10 到 3.14 之间测试 Python SDK,同时包含针对 Flet Flutter 端的测试。
  • 控件和示例集成测试会检查行为并对比截图,帮我们同时发现功能性 bug 和视觉回归。
  • Python 二进制包集成测试在 Android 和 iOS 模拟器上测试原生库。移动包构建流水线支持 Python 3.12、3.13 和 3.14,并可在这套组合上运行设备测试(特别感谢 @ndonkoHenri 在 Python 二进制包及其集成测试上做的工作!)。
  • flet build 集成测试使用 Python 3.12、3.13 和 3.14 为 Windows、macOS、Linux、iOS、Android 和 web 构建应用。Android 和 web 构建还会在多种宿主操作系统上进行验证。
  • flet test 集成测试更进一步:它们会启动打包好的应用,在全部五个原生平台、全部三个内置 Python 版本(包括 Linux ARM64)上与之交互。

这些检查都在 CI 中自动执行:单元测试在相关推送和 pull request 上运行,构建和设备集成测试套件在相关 pull request 上运行。你可以查看框架 CI、控件测试、构建矩阵和设备测试。

你也可以用 pytest 为自己的应用编写集成测试,通过 flet test 在桌面或移动端对打包后的应用运行:点击按钮、输入文本、验证完整的用户流程。在 Android 和 iOS 上,还能通过截图对比捕获视觉回归。

如果这还不能让你相信框架足够稳定,那我也没别的办法了!😅

与代码一同成长的文档​

我们的 API 文档由 Python 源码生成,所以编辑器和网站上看到的描述出自同一来源。示例截图和 GIF 来自集成测试,CI 会把渲染出的 UI 与参考图片进行比对。

我们还自研了文档工具 CrocoDocs,将 Python API 文档引入 Docusaurus。它通过连接 docstring、交叉引用、可运行示例以及生成的媒体资源,简化了保持文档与框架同步的流程。了解我们如何构建文档流水线。

更快的更新、更快的启动、更好的打包​

自 Alpha 版发布以来,我们优化了 Flet 中影响应用响应速度和用户触达效率的部分:

  • 更快的 UI 协调机制。 Flet 会追踪属性变更,并在计算更新时跳过不必要的比较。根据0.83 基准测试,控件差异比对性能提升了最高 6.7 倍,同时惠及命令式和声明式应用。
  • Python 与 Dart 直接通信。 在打包的原生应用中,dart-bridge 允许两个运行时在同一进程内通信,无需使用 socket。专用的数据通道也使得高效传输图像及其他二进制数据成为可能。
  • 跨平台更好的打包体验。 我们减少了启动任务,默认启用字节码编译,并重新设计了 Android 打包,使 Python 包无需先解压即可直接从 APK 中加载。详见0.86 发布公告。

你的 Python 版本,你的 Python 库​

Flet 支持将 Python 3.12、3.13 或 3.14 打包到你的应用中。你可以选择适合当前依赖项的版本,并在准备好后迁移到更新的运行时。Web 构建会使用对应的 Pyodide 版本。查看如何选择 Python 版本。

当应用运行在手机上时,Python 的体验仍应如同使用 Python 本身。这意味着你能使用那些依赖的库。

我们的 软件包索引 现已包含 超过 100 个软件包,包括 NumPy、pandas、Matplotlib、Pillow、SciPy、scikit-learn、cryptography 和 pydantic-core,以及相关的本地库。我们的 mobile-forge 流水线 自动化了针对支持的各种 Python 版本为 iOS 和 Android 构建 wheels 的过程,并包含集成测试以在移动端运行这些软件包。可用性取决于具体的软件包和目标平台,但你不再需要自己从头摸索如何交叉编译本地依赖项。

面向大型应用的声明式 UI​

Flet Declarative 允许你将 UI 描述为应用状态的函数,并将其组织为可重用的组件。随着应用规模的扩大,这种方式比手动在多个事件处理程序之间同步控件更容易理解和维护变更。

我们自己也在用它:Flet Studio 和 Flet 移动应用 都是声明式 Flet 应用。使用 Flet 构建我们自己的产品,有助于我们发现并修复你在项目中也会遇到的同样问题。

命令式风格仍受支持。请参阅我们的声明式与命令式应用对比,选择适合你项目的方法。

对平滑升级的承诺​

我们承诺不会频繁破坏所有功能。:)

严肃一点说,我们知道每次 API 变更都可能给维护应用的人带来工作。在 1.0 版本中,我们的目标是让升级更可预测,给你留出适应的时间,并解释需要变更的内容。

我们的兼容性策略 描述了其运作方式:在可能的情况下,API 在移除前会先被废弃,并提供警告和文档指引你使用替代方案。默认的废弃周期为三个次要版本,例外情况会在发布说明或迁移指南中说明。需要采取操作的变更会汇总在破坏性变更和废弃项中。

更好的入门工具​

Flet MCP server 让你的 AI 编程助手可以获取特定版本的 Flet API 信息,还提供了查找示例、图标和 CLI 选项等工具,帮助助手基于你实际使用的 API 来工作。

Flet Studio 让你可以在浏览器里探索 Flet:试用示例、fork 一个应用、编辑并与他人分享。它内置的 AI agent 能帮你把第一个版本跑起来,你还可以下载项目在本地继续开发。从"不知道能不能做出来"到有个东西可以上手试,这就是最简单的路径。

就绪不等于完成​

我们相信 Flet 1.0 已经可以用于生产应用了。但 1.0 只是一个里程碑,Flet 还会继续演进。

还有 bug 要修、API 要改进,很多工作流也还能做得更顺手。我们会继续打磨性能、平台支持和文档,以及那些让框架用起来舒服的日常细节。

未来规划​

我们的下一阶段是改进 Flet 框架,让构建、发布和使用 Flet 应用的整体体验更好。2026 和 2027 年的路线图涵盖三个方向:

  • Flet Framework:升级到更新的 Flutter 和 Python 版本,提供更多 UI 风格选择,如 shadcn、Fluent、macOS 和 Yaru 控件,支持 BLE 和 NFC,增加更多传感器示例,并持续改进文档。
  • Flet Studio:接入 GitHub、推出桌面版、打造更丰富的 Gallery,并为 Studio 提供 MCP 支持。我们还计划推出一个 CLI,让你在本地开发流程中访问 Studio 服务。
  • Fletbase:面向 Flet 应用的后端服务,包括云端打包、发布到应用商店、静态网站托管、数据库、文件存储和身份认证。

我们的目标是让你把更多时间花在构建应用本身,其余的交给工具处理——从最初的实验到发布和维护。这些是接下来几个版本的计划,欢迎关注路线图,看它们逐步落地。

如何升级​

如果你使用 pip:

pip install 'flet[all]' --upgrade

如果你使用 pyproject.toml 配合 uv,并想升级所有依赖:

uv sync --upgrade

仅升级 Flet 核心包:

uv sync --upgrade-package flet \
--upgrade-package flet-cli \
--upgrade-package flet-desktop \
--upgrade-package flet-web

如果项目固定了较旧版本的 Flet,请先更新 pyproject.toml 或 requirements.txt 中的版本约束。同时,将使用到的 Flet 扩展包(如 flet-audio 或 flet-video)也更新到对应的 1.0 版本。

升级现有应用前,请先查阅 1.0 迁移说明,包括已移除的废弃 API 以及对 InputBorder 的修改。

如果你正在从 0.28.x 迁移,这是一次较大的变更——Flet 1.0 并非简单的直接替换。新的从 Flet 0.28 迁移到 1.0 指南会逐步指导迁移过程,从依赖项和重命名的 API 开始。请特别关注单线程模型:在 0.28 中,每个同步事件处理器都在独立线程运行,因此阻塞代码不会冻结 UI;而在 1.0 中,处理器运行在应用的事件循环上,之前没问题的代码在迁移后会阻塞主线程,导致应用失去响应,直到将其移出事件循环。

Flet 新手?请参考入门指南,或打开Flet Studio 在浏览器中直接体验。

感谢!❤️​

感谢所有贡献代码、报告 Bug、完善示例、解答疑问或信任 Flet 来构建应用的人:谢谢 🙏🏻。你们帮助了我们走到今天。

达到 1.0 是值得骄傲的时刻,我们也很期待看到大家用它创造的作品。如果之前一直在等 1.0 再尝试 Flet,今天就是行动的好时机。

去获取 Flet 1.0,构建你梦想中的项目,并与社区分享!🎉

原始来源: flet

评论 (0)