本文档涵盖了 AppFlowy 中用于显示数据库视图的用户界面组件和渲染系统。它重点介绍处理跨不同视图类型(网格、看板、日历)和平台(移动端、桌面端)的数据库数据视觉呈现的 Flutter 前端组件。
有关底层数据库管理和数据结构的信息,请参阅数据库和协作系统。有关更广泛的数据库视图系统架构,请参阅数据库视图系统。
AppFlowy 的数据库 UI 系统围绕模块化组件架构构建,支持多种视图类型并提供针对平台定制的适应。
来源:frontend/appflowy_flutter/lib/mobile/presentation/database/board/widgets/mobile_board_trailing.dart1-142 frontend/appflowy_flutter/lib/mobile/presentation/database/mobile_calendar_events_screen.dart1-109 frontend/appflowy_flutter/lib/workspace/application/settings/appearance/mobile_appearance.dart1-285 frontend/appflowy_flutter/lib/workspace/application/settings/appearance/desktop_appearance.dart1-160
数据库 UI 组件利用一套全面的主题系统,通过 BaseAppearance 类层次结构提供平台特定的视觉样式。
MobileAppearance 类定义了移动平台上数据库组件的特定配色方案和样式
| 主题属性 | 浅色主题 | 深色主题 | 用途 |
|---|---|---|---|
| 主色 | #00BCF0 | #00BCF0 | 数据库操作按钮,高亮 |
| 次要背景色 | #f7f8fc | #2d2d2d | 分组卡片,属性背景 |
| 主要容器 | #F1F1F4 | 不适用 | 分组卡片标题 |
| 第三主色 | #858585 | #858585 | 隐藏分组标题,卡片文本 |
移动端主题系统为数据库特定元素提供专业化样式
来源:frontend/appflowy_flutter/lib/workspace/application/settings/appearance/mobile_appearance.dart36-56
DesktopAppearance 类利用灵活的主题系统,为桌面优化数据库组件提供样式
theme.primarytheme.hoverBG1theme.selector 设置值悬停状态theme.toolbarColor 进行编辑器工具栏样式设置来源:frontend/appflowy_flutter/lib/workspace/application/settings/appearance/desktop_appearance.dart22-48
看板视图实现了一个看板风格的界面,具有用于分组管理和卡片操作的交互式组件。
MobileBoardTrailing 小部件通过基于切换的编辑界面处理新看板分组的创建
该组件使用 screenSize.width * 0.7 进行响应式尺寸调整,以适应不同的移动屏幕尺寸,并通过 BoardEvent.createGroup() 操作,利用 BoardBloc 进行状态管理。
日历视图系统提供基于事件的数据库可视化,并配有专门的事件管理屏幕。
MobileCalendarEventsScreen 处理特定日期的日历事件显示和交互
该屏幕实现了动态事件列表管理,当新事件与当前日期匹配时,会自动从 CalendarState.newEvent 中添加。空状态通过 MobileCalendarEventsEmpty 组件处理。
来源:frontend/appflowy_flutter/lib/mobile/presentation/database/mobile_calendar_events_screen.dart13-108
数据库组件根据平台限制和交互模式调整其渲染
Size.fromHeight(48)MediaQuery 屏幕尺寸进行响应式宽度计算theme.hoverBG1 及相关属性进行悬停状态管理ScrollbarThemeData 配置进行精确滚动条主题设置VisualDensity.standard 进行桌面端特定的视觉密度设置FontSizes.s11)的增强型工具提示样式来源:frontend/appflowy_flutter/lib/workspace/application/settings/appearance/mobile_appearance.dart107-129 frontend/appflowy_flutter/lib/workspace/application/settings/appearance/desktop_appearance.dart83-93 frontend/appflowy_flutter/packages/flowy_infra_ui/lib/style_widget/snap_bar.dart18-22
数据库 UI 组件遵循一致的交互模式,利用 Flutter 的 BLoC 架构进行状态管理
这种模式确保了所有数据库视图类型之间的数据流一致性,同时保持了 UI 呈现与业务逻辑的分离。
来源:frontend/appflowy_flutter/lib/mobile/presentation/database/board/widgets/mobile_board_trailing.dart73-77 frontend/appflowy_flutter/lib/mobile/presentation/database/mobile_calendar_events_screen.dart55-56