基于 Flutter 开发的 ComfyUI 移动端客户端,旨在远程连接部署的comfyui,在手机端进行运行简单工作流,远程参数调节、执行监控及图片查看功能。
- JSON 导入:支持导入 ComfyUI API 格式的
.json工作流文件。 - 参数编辑器:
- 动态解析:遍历工作流节点,支持数值、布尔值、文本等基础类型的编辑。
- 模型同步:通过
object_info接口获取服务器模型/LoRA 列表,实现下拉菜单选择。 - 图像上传:支持调用系统文件选择器上传本地图片至服务器。
- 种子逻辑:支持固定、增加、减少、随机四种种子处理模式。
- 自动保存:任务提交前自动持久化当前参数修改。
- WebSocket 联动:建立长连接,监听
executing和progress事件。 - 进度反馈:工作流卡片内嵌进度条,显示当前运行节点名称及具体步数。
- 实时预览:支持 WebSocket 二进制预览图显示。
- 状态找回:监听应用生命周期,在回到前台时自动同步丢失的执行状态。
- 双写存储:生成的图片保存至应用私有目录(用于 UI 快速加载)并导出至系统相册。
- 本地图库:基于本地文件系统加载图片,支持全屏滑动查看及 Hero 转场。
- 历史记录:SQLite 存储执行任务,支持标签化参数查看及单项复制。支持本地与云端同步删除。
- 通讯层:
- 使用
Dio处理 RESTful API 请求(队列提交、模型获取、历史查询)。 - 使用
web_socket_channel处理双向实时通讯,同步clientId以确保消息路由准确。
- 使用
- 状态管理:
- 采用
Provider模式。WorkflowProvider负责核心逻辑,并通过ChangeNotifierProxyProvider与HistoryProvider实现数据联动。
- 采用
- 持久化:
sqflite(SQLite) 维护工作流库及执行历史。shared_preferences存储服务器地址及主题偏好。
- 安卓适配:
- 分区存储:通过
saver_gallery插件调用 MediaStore API,解决 Android 11+ 的公共目录写入限制。 - 动态权限:集成
permission_handler处理不同安卓版本的媒体访问权限。
- 分区存储:通过
- UI 架构:
- 采用
CustomScrollView与SliverAppBar实现苹果风格的滚动沉浸感。 - 自定义
GlassContainer组件实现毛玻璃磨砂效果。
- 采用
- ComfyUI 服务端启动参数需包含
--listen。 - 移动端设备与服务器需处于同一局域网环境。