首页 Flutter系列1:flet
文章
取消

Flutter系列1:flet

刚开始学习Flutter,就找它的其它语言替代品,是不是有点不专一了。

Flet(https://flet.dev/)是一个基于 Flutter 渲染引擎构建的开源框架,但与原生 Flutter 开发模式有显著差异。与 Flutter 的核心关系如下:


⚙️ 一、技术架构关系

  1. 底层依赖 Flutter 渲染引擎
    Flet 直接利用 Flutter 的 Skia/Impeller 渲染引擎实现跨平台 UI 绘制,因此其应用在 iOS、Android、Web、桌面等平台的表现与 Flutter 一致,具备 60fps 高性能和像素级多端一致性。
    • 区别:Flet 不要求开发者直接使用 Dart 语言或 Flutter Widget 体系,而是通过 Python(或其他语言)抽象层生成 UI 逻辑。
  2. 简化 Flutter 开发模型
    • Flet 将 Flutter 的复杂 Widget 树简化为命令式编程模型,例如用 Python 代码直接控制按钮、文本框等组件,无需深入 Dart 生态。
    • 例如:通过 Python 创建按钮并绑定事件:
      1
      2
      3
      4
      
      import flet
      def button_clicked(e):
          e.control.text = "Clicked!"
      flet.app(target=button_clicked)
      

💎 二、核心功能定位

  1. 面向非前端开发者
    Flet 的目标用户是 Python/Go/C# 等后端语言开发者,允许他们用熟悉的语言构建全栈应用,无需学习 Dart 或前端技术栈。
    • 典型场景:快速开发内部工具、数据看板、信息录入系统等。
  2. 单体架构设计
    与 Flutter 需搭配后端服务不同,Flet 应用是单体有状态应用,内置 Web 服务器和实时通信能力,天然支持多用户交互(如实时协作应用)。

  3. 部署灵活性
    支持多种交付形式:
    • Web 应用(通过浏览器访问)
    • 桌面独立应用(打包为 Windows/macOS/Linux 原生二进制)
    • 移动端 PWA 或通过 Flet 客户端运行。

🆚 三、与传统 Flutter 开发对比

| 维度 | Flutter (原生) | Flet | |——————|———————————–|———————————–| | 编程语言 | Dart(强类型,面向UI优化) | Python/Go/C#(后端语言友好) | | 技术定位 | 全功能跨平台 UI 框架 | 快速原型工具 & 轻量级应用框架 | | 开发模式 | 声明式 Widget 树 | 命令式组件控制 | | 原生依赖 | 需处理平台通道(Channel)通信 | 内置通信层,无需手动桥接 | | 多用户支持 | 需自行实现后端实时通信 | 原生支持多用户实时交互 | | 学习曲线 | 需掌握 Dart 和 Flutter 生态 | 仅需 Python 基础 |


⚠️ 四、局限性

  1. 性能深度优化不足
    复杂动画或高频交互场景下,Flet 的抽象层可能带来性能损耗,不如直接使用 Flutter 灵活。
  2. 生态成熟度较低
    Flet 的组件库和工具链远不如 Flutter 丰富(如缺乏 DevTools 深度调试支持)。
  3. 企业级能力欠缺
    对原生系统能力(如蓝牙、传感器)的调用需依赖第三方插件,成熟度不及 Flutter 的 pub.dev 生态。

🧩 五、典型应用场景推荐

  • ✅ 适用 Flet 的场景
    • Python 开发者快速构建数据可视化后台或内部工具。
    • 轻量级跨平台 MVP 产品验证(如信息展示型 App)。
    • 教育领域简化 UI 编程教学(避免 Dart 学习成本)。
  • ❌ 需选择原生 Flutter 的场景
    • 高性能游戏/复杂动画应用(如 Lottie 动画密集型界面)。
    • 需深度集成原生 SDK 的企业级应用(如支付、AR 功能)。
    • 已有 Flutter 团队且追求长期技术栈统一的项目。

💎 总结

Flet 本质是 Flutter 渲染能力的“上层封装”,通过牺牲部分灵活性和性能深度,换来了对后端开发者的低门槛接入。它的价值在于填补了 Python 生态与高性能跨平台 UI 之间的空白,而非替代 Flutter。若团队核心优势是 Python 且需求偏向轻量级应用,Flet 是高效选择;若追求极致性能或复杂交互,原生 Flutter + Dart 仍是更优解。

本文由作者按照 CC BY 4.0 进行授权