本文档涵盖了 AppFlowy 中的 AppFlowyEditor 集成、块组件系统、编辑器插件和文档渲染架构。它着重于文档编辑器是如何使用模块化组件构建的,以及各种块类型和编辑功能是如何作为插件实现的。
有关编辑器中 AI 写作助手功能的信息,请参阅AI 写作助手。有关整体文档系统架构的详细信息,请参阅文档编辑器系统。
AppFlowy 将开源的 AppFlowyEditor 库作为其核心富文本编辑引擎进行集成。此集成围绕着AppFlowyEditorPage展开,它将核心AppFlowyEditor小部件与 AppFlowy 特定的自定义和配置进行了封装。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart43-74 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart63-102
AppFlowyEditorPage作为主要的集成点,接受EditorState和各种自定义参数。它用平台特定的样式、自定义块组件、键盘快捷键和工具栏项来配置编辑器。
| 组件 | 目的 | 配置文件位置 |
|---|---|---|
EditorState | 管理文档状态和操作 | 从DocumentBloc传递 |
EditorStyleCustomizer | 平台特定样式 | editor_style.dart31-75 |
| 块组件构建器 | 自定义块类型 | editor_configuration.dart294-447 |
| 字符快捷键 | 文本转换快捷键 | editor_page.dart118-129 |
| 命令快捷键 | 键盘命令处理程序 | editor_page.dart91-94 |
| 工具栏项 | 浮动工具栏配置 | editor_page.dart96-116 |
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart43-590 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart31-606
块组件系统是 AppFlowy 文档结构的基础。每种块类型(段落、标题、标注等)都作为独立的组件实现,拥有自己的构建器、配置和渲染逻辑。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart63-102 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart294-447
块组件通过一个集中式的构建器映射进行注册,该映射将块类型与其对应的构建器关联起来
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart304-447
AppFlowy 提供了一套全面的内置块组件,每个组件都实现了特定的功能和 UI 模式。
| 块类型 | 构建器类 | 主要功能 |
|---|---|---|
| 段落 | ParagraphBlockComponentBuilder | 带富文本格式的基本文本 |
| 标题 | HeadingBlockComponentBuilder | 6个级别,自定义样式 |
| 引用 | QuoteBlockComponentBuilder | 带自定义样式的引述块 |
| 项目符号列表 | BulletedListBlockComponentBuilder | 自定义项目符号图标 |
| 编号列表 | NumberedListBlockComponentBuilder | 自动编号 |
| 待办列表 | TodoListBlockComponentBuilder | 可勾选的项目 |
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart492-573
标注块展示了高级组件功能,包括表情符号选择、背景颜色和嵌套内容
折叠列表组件支持可折叠内容和标题级别
大纲组件从标题块自动生成目录
EditorStyleCustomizer为编辑器组件提供了平台特定的样式和主题集成。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart68-192
| 功能 | 桌面实现 | 移动端实现 |
|---|---|---|
| 字体系列 | DocumentAppearanceCubit.fontFamily | DocumentPageStyleBloc.fontFamily |
| 字体大小 | DocumentAppearanceCubit.fontSize | FontLayout.fontSize |
| 行高 | 固定为 1.4 | LineHeightLayout.lineHeight |
| 文本方向 | DocumentAppearanceCubit.defaultTextDirection | 与桌面端相同 |
| 光标颜色 | appearance.cursorColor | 默认平台颜色 |
| 选区颜色 | appearance.selectionColor | 默认平台颜色 |
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart77-192
编辑器包含了用于块操作和格式化的复杂工具栏和菜单系统。
浮动工具栏提供上下文格式选项
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart96-116 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart414-474