用户界面系统包含 AppFlowy 基于 Flutter 的前端层,提供跨平台的用户界面组件、导航模式和视觉设计系统。该系统负责桌面和移动平台的展示层,包括主侧边栏导航、视图管理、主题设置和响应式布局。
有关后端数据管理和业务逻辑,请参阅 后端架构和核心服务。有关文档编辑功能,请参阅 文档编辑器系统。有关数据库界面组件,请参阅 数据库视图系统。
UI 系统采用分层架构,明确区分平台特定适配和共享组件
来源: frontend/appflowy_flutter/lib/workspace/presentation/home/desktop_home_screen.dart44-331 frontend/appflowy_flutter/lib/mobile/presentation/base/mobile_view_page.dart35-461 frontend/appflowy_flutter/lib/startup/tasks/generate_router.dart46-128
导航系统围绕 HomeSideBar 组件构建,提供分层视图管理和工作区导航。
关键组件
来源: frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/sidebar.dart51-221 frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart146-215 frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/space/sidebar_space.dart92-173
AppFlowy 提供自适应 UI 模式,可根据平台差异进行响应,同时保持功能一致性
平台特定适配
| 功能 | 桌面实现 | 移动端实现 |
|---|---|---|
| 导航 | 带有可调整大小面板的 HomeSideBar | 带有标签页的 MobileBottomNavigationBar |
| 应用栏 | 静态标题栏 | 带有滚动适配的 MobileViewPageImmersiveAppBar |
| 模态 UI | 对话框叠加 | 底部抽屉式展示 |
| 布局 | 带调整器的多面板 | 带导航的单面板 |
来源: frontend/appflowy_flutter/lib/workspace/presentation/home/desktop_home_screen.dart176-210 frontend/appflowy_flutter/lib/mobile/presentation/base/mobile_view_page.dart155-191 frontend/appflowy_flutter/lib/startup/tasks/generate_router.dart132-216
路由系统使用 GoRouter 进行声明式导航,并支持平台特定的路由配置
关键导航模式
TabsBloc 管理多个打开的视图StatefulNavigationShell 保留状态ActionNavigationBloc 用于从后端事件进行程序化导航来源: frontend/appflowy_flutter/lib/startup/tasks/generate_router.dart46-128 frontend/appflowy_flutter/lib/workspace/application/tabs/tabs_bloc.dart frontend/appflowy_flutter/lib/startup/tasks/generate_router.dart132-216
主题系统提供跨平台一致的视觉样式,支持亮/暗模式和用户自定义
主题配置
| 组件 | 目的 | 关键属性 |
|---|---|---|
AppearanceSettingsCubit | 主题状态管理 | themeMode, brightness, fontFamily |
BaseAppearance | 主题基础 | 默认字体、大小、间距常量 |
| 平台主题 | 自适应样式 | 平台特定的配色方案和排版 |
来源: frontend/appflowy_flutter/lib/workspace/application/settings/appearance/base_appearance.dart1-130 frontend/appflowy_flutter/lib/workspace/presentation/widgets/view_title_bar.dart600-607
UI 系统采用可组合组件架构,明确关注点分离
组件层次结构
FlowyButton, FlowyText)HSpace, FlowyContainer)AppFlowyPopover, FlowyHover)ViewItem, ConfirmPopup)来源: frontend/appflowy_flutter/lib/workspace/presentation/home/menu/view/view_item.dart433-631 frontend/appflowy_flutter/lib/workspace/presentation/widgets/view_title_bar.dart342-518 frontend/appflowy_flutter/lib/workspace/presentation/home/menu/sidebar/space/shared_widget.dart274-476 frontend/appflowy_flutter/lib/workspace/presentation/widgets/dialogs.dart21-318