跳到主要内容

Flet 自适应 UI 和自定义控件发布

· 阅读需 5 分钟
Feodor Fitsner
Flet 创始人和开发者

🥰 情人节快乐,亲爱的朋友们!🥰

我们刚刚发布了 Flet 0.20.0,重点如下:

  1. 自适应 UI。
  2. 使用第三方 Flutter 包扩展 Flet 应用。
  3. 新控件:Video(耶!)、AudioRecorder 和一系列 Cupertino 风格控件。Flet 现在包含 97 个内置控件!
注意

Flet 0.20.0 包含一个新的 Video 控件。虽然 macOS 和 Windows 已经包含所有测试 Flet 应用所需的媒体库,但在 Linux 上需要安装 libmpv 包。在 Ubuntu/Debian 上可以通过以下命令安装:

sudo apt install libmpv-dev mpv

自适应 UI

自适应控件允许编写具有单个代码库的应用程序,这些应用程序在运行的平台不同时具有不同的外观和行为。

截至目前,Flet 提供了 [11 个自适应控件]。要使控件自适应,可以将其 adaptive 属性设置为 True

在 Flet 0.20.0 中,我们为所有类似容器的控件引入了 adaptive 属性。 在容器上设置 adaptive=True 会将此属性传播到所有子自适应控件。

Page 添加了 design 属性,使您可以对控件的设计语言进行细粒度控制,其值可以为:ft.PageDesign.ADAPTIVEft.PageDesign.MATERIALft.PageDesign.CUPERTINO

只需设置 page.design = ft.PageDesign.ADAPTIVE,即可使您的应用在 iOS 和 Android 设备上看起来都很棒:

iPhone

Android

集成现有的 Flutter 包

目前 Flet 提供了近 100 个控件,但如您所想,并不是每个 Flutter 库/小部件都可以添加到核心 Flet 库中,Flet 团队也无法在可接受的时间范围内独自完成。

同时,我们也不希望让选择 Flet 来构建其下一个商业或企业应用的早期采用者处于他们的进展依赖于 Flet 团队是否有时间和愿意实现他们所需的 Flutter 控件的情况。

在 Flet 0.20.0 中,我们重新构建了 Flutter 核心包,并确定了可供第三方开发者使用的 API 来添加他们自己的用 Dart 编写的 Flet 控件。

我们目前正在编写 API 文档,但您现在可以通过查看 VideoAudio 控件的 Dart 源代码来了解如何实现自定义 Flutter 包。

简而言之,您需要创建一个新的 Flutter 包,其中包含并导出两个方法:

void ensureInitialized();
Widget createControl(CreateControlArgs args);

参见 ensureInitialized()createControl()Video 控件实现。

在 Python 方面,您需要创建一个从 Control(非可视或叠加控件)或 ConstrainedControl 继承的新类。

参见 Python 中 Video 类的实现。

要在构建 Flet 应用时集成自定义 Flutter 包,使用 flet build 命令,您可以使用 --include-packages 选项或在 Flet 应用根目录下的 pubspec.yaml 文件中列出额外的包。

Video 控件

Video 控件在一个单独的 Flutter 包中实现。

要构建包含 Video 控件的 Flet 应用,请在 flet build 命令中添加 --include-packages flet_video,例如:

flet build apk --include-packages flet_video

Flet 0.20.0 是一个相对较大的 版本,可能会破坏一些东西。

升级到 Flet 0.20.0,测试您的应用,并通过加入 Flet Discord 服务器 或在 Flet GitHub 讨论 中创建新线程来告诉我们您的想法。

祝您愉快!

将应用打包进行分发

· 阅读需 4 分钟
Feodor Fitsner
Flet 创始人兼开发者

亲爱的朋友们!在今年的最后一篇文章中,我想感谢大家对 Flet 项目的贡献,无论是散发信息,提交拉取请求,加入 Discord 讨论还是发送烦人的错误报告!

在你们的极好支持下,我们在 2023 年取得了很多成就:

  • 70 多个控件(特别感谢 @ndonkoHenri 的巨大贡献)。
  • GitHub 上获得 7,700 颗星。
  • Discord 上有 2,150 名用户和社区版主(感谢你们!)。
  • Flet 与 Pyodide 的集成,用于纯客户端的 Python 应用——没有其他框架能为 Pyodide 提供更好的用户界面!
  • Flet 应用已上线 AppStore 和 Google Play——这是在移动设备上测试的好方法,也是 Flet 应用被接受的实际证明。
  • ……最后……隆重宣布……🥁🥁🥁 flet build 命令来了!🎉🎉🎉

🎄 "新年版" 🎄 的 Flet 0.18.0 刚刚发布,这个版本允许在所有平台上打包您的 Flet 应用进行分发:iOS、Android、Web、macOS、Windows 和 Linux!

一个命令玩转所有!

现在闭环完成了:您可以使用 Flet CLI 创建 (flet create)、运行 (flet run) 和构建 (flet build) 您的 Flet 应用。

Flet CLI 提供了 flet build 命令,该命令允许将 Flet 应用打包成独立的可执行文件或安装包以便分发。

flet build 命令取代了 flet pack(打包成桌面应用)和 flet publish(打包成静态网站)命令,并允许将您的 Flet 应用转换为 Android 或 iOS 包、桌面应用和静态网站。

对于构建桌面应用,flet build 不再依赖于 flet pack 使用的 PyInstaller,而是使用 Flutter SDK 生成一个快速、离线、完全可定制的(带有您自己的图标、关于对话框和元数据)Windows、Linux 和 macOS 的可执行文件,其中嵌入了 Python 运行时并在进程中运行。

flet publish 相比,使用 flet build 构建的静态网站加载速度更快,因为所有 Python 依赖项现在都打包成一个单一的归档文件,而不是在运行时通过 micropip 拉取。flet build web 还会检测内置在 Pyodide 中的原生 Python ,如 bcrypthtml5libnumpy 等,并从 Pyodide 包注册表中安装它们。

查看 打包应用以便分发 指南,获取关于 flet build 命令的完整信息。

请通过加入 Flet Discord 服务器 或在 Flet GitHub 讨论区 创建新话题,让我们知道您的想法。

祝大家新年快乐!节日愉快!

Flet为FastAPI提供支持

· 阅读需 3 分钟
Feodor Fitsner
Flet 创始人和开发者

我们刚刚发布了支持 FastAPI 的 Flet 0.10.0!

FastAPI 配合 Uvicorn、Hypercorn、Gunicorn 或其他网络服务器,可以取代内置的 Flet 网络服务器(Fletd),以可靠地运行生产环境中的 Flet 工作负载。

另一方面,经验丰富的 FastAPI 开发者可以使用 Flet,轻松地为现有或新的 FastAPI 服务添加互动的实时仪表盘和管理 UI。

一个简单的应用示例

import flet as ft
import flet_fastapi

async def main(page: ft.Page):
await page.add_async(
ft.Text("Hello, Flet!")
)

app = flet_fastapi.app(main)

这是一个简单的应用程序,只是在网页上输出“Hello, Flet!”。

要运行该应用程序,请安装 Flet for FastAPI 和 Uvicorn:

pip install flet-fastapi
pip install uvicorn

将上述代码保存为 hello.py,然后启动 Uvicorn:

uvicorn hello:app

打开浏览器并导航到 http://127.0.0.1:8000 查看运行中的应用程序。

警告

Flet 应用程序必须是 异步的 才能与 FastAPI WebSocket 处理程序一起工作。

特性和优势

  • 单域名下的多个 Flet 应用程序 - 映射到根路径和/或子路径。
  • 简单的单行映射单个端点配置
  • 围绕 FastAPI WebSocket 连接的轻量级异步包装器,以提高并发性。
  • 提供包含用户资源和应用程序元信息自定义的 Flet 静态文件。
  • FilePicker 控件的上传处理程序。
  • 处理 OAuth 回调进行身份验证流程。

查看 指南 以获取有关 Flet 与 FastAPI 的完整信息。

通过加入 Flet Discord 服务器 或在 Flet GitHub 讨论 创建新主题,让我们知道您的想法。

用于 Android 的 Flet

· 阅读需 3 分钟
Feodor Fitsner
Flet创始人兼开发者

🤖 现已支持Android平台!

通过 Flet Android 应用,你可以在 Android 设备上查看 Flet Python 应用的外观和行为,而应用本身仍在你的电脑上运行。

与 iOS 类似,Flet for Android 是一个完全用 Python 编写的 Flutter 应用,使用了两个开源软件包:serious_pythonflet。生成的应用包技术上符合 Google Play 的要求,因此你可以用纯 Python 发布优秀的 Android 应用。

按照本指南 开始在 Android 上测试你的 Flet 应用。探索应用、浏览画廊、尝试示例项目和应用设置。

常见问题

如何将我的 Flet 应用打包到 Google Play?

我们将提供一个启动 Flutter 应用的项目模板和指南,介绍如何将 Flutter、serious_python 软件包和你的 Python 应用结合在一起,创建一个独立的 Android 应用并发布到 Google Play。

查看 serious_python 的自述文件,了解如何创建一个 Flutter 启动并将你的 Python 应用打包在其中。使用 flet_example 项目作为起点。

你们会提供 Windows、macOS 和 Linux 的打包吗?

会的!目前,Flet 桌面应用使用 flet pack 命令和 PyInstaller 打包。生成的应用包增加了性能和大小的开销,并且难以定制,因此我们将用原生的 Flutter 打包替代它。

Flet v0.9.0 发行说明

要在 Android 上进行测试,你需要将 Flet 安装升级到 v0.9.0。

为了支持 Android,Flet CLI 进行了一些更改。如果你发现了什么异常情况,请告诉我们。

祝您使用愉快!

用于 iOS 的 Flet

· 阅读需 3 分钟
Feodor Fitsner
Flet 创始人和开发者

🎉 哇哦,Flet 应用现已上架 App Store!🎉

有了 Flet iOS 应用,您可以在 iPhone 或 iPad 上查看 Flet Python 应用的外观和行为,而应用程序本身正在您的计算机上运行。

但这不仅仅是测试手机上的 Flet 应用程序!Flet 移动应用程序本身是用 Python 编写的,其发布到 App Store 是整个 Flet 项目中的一个重要里程碑。这是一个成功的证明,表明您可以仅使用 Python 创建出色的移动应用程序,并将其打包以便在 App Store 中被接受!

按照本指南 开始在 iPhone 或 iPad 上测试您的 Flet 应用程序。探索应用程序、浏览图库、尝试示例项目和应用程序设置。

我要感谢 Kivy 项目 制作了一个 iOS 工具链,我们使用它来编译适用于 iOS 设备的 Python 解释器和依赖项。我们发布了 serious_python 包,用于将 Python 运行时添加到任何 Flutter 应用程序中。

常见问题解答

何时支持 Android?

很快。它现在是我们的首要任务,我们已经开始研究它。

如何将我的 Flet 应用程序打包到 App Store?

我们将提供一个项目模板,用于引导 Flutter 应用程序,并提供指南,说明如何将 Flutter、serious_python 包和您的 Python 应用程序结合在一起,创建一个独立的 iOS 应用程序并将其发布到 App Store。

今年晚些时候,我们将创建一个 CI 管道以完全自动化该过程。

请查看 serious_python 的自述文件,了解如何创建 Flutter 引导程序并打包您的 Python 应用程序以在其中运行。使用 flet_example 项目作为起点。

Flet v0.8.0 发行说明

要在 iOS 上进行测试,您需要将 Flet 安装升级到 v0.8.0。

在 v0.8.0 中 进行了很多更改,并且有一些重大更改。在您升级到 0.8.0 时请耐心等待,并让我们知道您是否遇到任何问题。

尽情享受吧!