原生 Flutter 集成
**您的功能请求是否与问题有关?请描述。** OpenUI 目前专注于 JavaScript/TypeScript 运行时和示例。构建 Flutter 应用的团队没有本机方式来定义 OpenUI 组件库、生成 OpenUI Lang 提示、解析流式 OpenUI Lang 输出或直接将生成的 UI 渲染为 Flutter 小组件。这意味着 Flutter 集成可能需要依赖 WebView、与 Web 运行时的自定义桥接或特定于应用的解析器/渲染器。这会增加 Flutter 团队的阻力,使 OpenUI 在其他方面完全采用 Dart/Flutter 的移动产品中更难采用。 **请描述您希望的解决方案** 添加对 OpenUI 的原生 Flutter/Dart 支持。集成应能够实现以下功能: - 在 Dart 中定义 OpenUI 组件库并使用类型化属性。 - 从这些组件定义中生成系统提示。 - 解析 OpenUI Lang 输出,包括流式/增量输出。 - 将解析的 OpenUI Lang 渲染为 Flutter 小组件。 - 在可行的情况下支持常见的 OpenUI 原语,如布局、文本、表单、按钮、列表、表格和图表。 - 将生成的 UI 触发应用行为的行动/事件回调。 - 提供一个最小的 Flutter 示例应用,展示端到端的流式聊天流程。 一个好的初始版本可以专注于核心 Dart 运行时和 Flutter 渲染器,在扩展到完整组件面前实现最常见的 OpenUI Lang 功能。 **请描述您已考虑过的替代方案** - 使用 WebView 并在 Flutter 中渲染现有的 React 运行时。 - 将 OpenUI 渲染保留在服务器上,并将预渲染的 UI 发送给应用。 - 为有限的 OpenUI Lang 子集构建自定义应用特定的 Dart 解析器。 - 使用 React Native 而不是 Flutter 来实现移动 OpenUI 体验。 这些选项弥补了缺陷,但它们或降低了原生集成质量,或导致协议/渲染工作的重复。 **其他上下文** 这将使 OpenUI 对使用 Flutter 构建跨平台移动应用的团队更有用。这还将帮助将 OpenUI Lang 定位为一个可移植的 UI 生成协议,可以针对本地移动框架,而不仅仅是 Web 运行时。可能的包/模块形状: - `openui_lang` 用于解析、验证、提示生成和流式状态。 - `openui_flutter` 用于 Flutter 小组件渲染。 - `examples/flutter_chat` 用于端到端演示。
内容来源: thesysdev/openui