文档编辑器系统提供 AppFlowy 中的核心富文本编辑功能,使用户能够创建和编辑包含各种内容块、格式选项和交互元素的文档。该系统处理文档渲染、用户交互、块管理以及桌面和移动界面的跨平台适配。
有关文档中的 AI 写作助手,请参阅AI 写作助手。有关数据库视图渲染,请参阅数据库视图系统。
文档编辑器系统基于 appflowy_editor 包构建,并遵循块状架构,其中文档由分层内容块组成。该系统通过文档插件基础设施与 AppFlowy 的更广泛生态系统集成。
来源:frontend/appflowy_flutter/lib/plugins/document/document_page.dart31-387 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart43-590 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_style.dart68-192
AppFlowyEditorPage 作为主要包装组件,将 AppFlowyEditor 与 AppFlowy 特定的功能和配置集成。
| 组件 | 文件 | 目的 |
|---|---|---|
AppFlowyEditorPage | editor_page.dart43-74 | 集成 AppFlowy 的主编辑器包装器 |
EditorStyleCustomizer | editor_style.dart31-607 | 处理编辑器组件的样式和主题 |
InlineActionsService | editor_page.dart80-89 | 管理提及和引用等行内操作 |
编辑器页面初始化包括
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart153-230
EditorStyleCustomizer 为桌面和移动平台上的编辑器提供全面的样式定制功能
主要样式方法
headingStyleBuilder() - 根据级别配置标题文本样式codeBlockStyleBuilder() - 设置代码块外观selectionMenuStyleBuilder() - 自定义选择菜单颜色customizeAttributeDecorator() - 处理文本属性样式来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart77-192 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart194-338
文档编辑器采用灵活的块状架构,其中每种内容类型都由一个块组件表示,该组件具有自己的构建器、配置和小部件实现。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart53-102
每个块组件都支持标准化的操作和配置
| 操作类型 | 实现 | 目的 |
|---|---|---|
OptionAction.delete | editor_configuration.dart161 | 删除块 |
OptionAction.duplicate | editor_configuration.dart162 | 复制块 |
OptionAction.turnInto | editor_configuration.dart170 | 转换块类型 |
OptionAction.color | editor_configuration.dart181 | 更改背景颜色 |
OptionAction.align | editor_configuration.dart184 | 文本对齐 |
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart159-193
标注块展示了典型的块组件结构
主要标注块功能
EmojiPickerButton 选择表情符号图标文档编辑器系统采用插件架构,通过各种编辑器插件和自定义功能扩展其功能。
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/plugins.dart1-78
编辑器提供全面的工具栏功能,可自定义项目
| 工具栏类别 | 项 (Items) | 文件引用 |
|---|---|---|
| 格式化 | 粗体、斜体、下划线、删除线 | editor_page.dart105 |
| 内容 | AI 写作、链接、代码 | editor_page.dart97-112 |
| 结构 | 标题、列表、对齐 | editor_page.dart100-114 |
| 高级 | 数学公式、颜色、更多选项 | editor_page.dart109-115 |
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart96-116
斜杠菜单提供块插入的快速访问,并支持可自定义的项目构建器
来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart140-146 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_configuration.dart31-51
文档编辑器系统为桌面和移动体验提供平台特定优化。
| 功能 | 桌面实现 | 移动端实现 |
|---|---|---|
| 工具栏 | 带悬停效果的 FloatingToolbar | 触控优化的 AppFlowyMobileToolbar |
| 填充 | EditorStyleCustomizer.documentPadding | 带节点填充的 EdgeInsets.zero |
| 滚动 | 基于跳转的导航 | 平滑滚动动画 |
| 操作 | 基于悬停的块操作 | 基于触控的操作按钮 |
移动编辑器包括专用组件
MobileBlockActionButtonsMobileFloatingToolbarDocumentPageStyleBloc 实现触控优化的间距和尺寸调整来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart414-432 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart47-55 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_style.dart141-192
桌面端实现提供
DesktopFloatingToolbarEditorDropHandler 支持拖放来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_page.dart433-475 frontend/appflowy_flutter/lib/plugins/document/document_page.dart188-210