doc/development/architecture.md
FlutterUnit 是一个全平台的 Flutter 组件展示和学习应用,支持 Android、iOS、Web、Windows、macOS 和 Linux 平台。项目采用模块化架构,提供了 300+ Flutter 组件的详细展示、代码示例和交互演示。
┌─────────────────────────────────────┐
│ Presentation Layer │ ← UI层 (Views/Pages)
├─────────────────────────────────────┤
│ Business Logic Layer │ ← 业务逻辑层 (BLoC)
├─────────────────────────────────────┤
│ Repository Layer │ ← 仓储层 (Repository)
├─────────────────────────────────────┤
│ Data Source Layer │ ← 数据源层 (Database/API)
└─────────────────────────────────────┘
FlutterUnit/
├── modules/
│ ├── basic_system/ # 基础系统模块
│ │ ├── app/ # 应用核心配置
│ │ ├── app_update/ # 应用更新
│ │ ├── authentication/ # 用户认证
│ │ ├── components/ # 通用组件
│ │ ├── l10n/ # 国际化
│ │ ├── storage/ # 数据存储
│ │ ├── toly_ui/ # UI组件库
│ │ └── utils/ # 工具类
│ ├── widget_system/ # 组件系统模块
│ │ ├── widget_module/ # 组件业务逻辑
│ │ ├── widget_repository/ # 组件数据仓储
│ │ └── widget_ui/ # 组件UI展示
│ ├── knowledge_system/ # 知识系统模块
│ │ ├── algorithm/ # 算法相关
│ │ ├── artifact/ # 工件管理
│ │ ├── awesome/ # 精选内容
│ │ ├── layout/ # 布局相关
│ │ └── note/ # 笔记功能
│ ├── painting_system/ # 绘制系统模块
│ │ └── draw_system/ # 自定义绘制
│ └── tools_system/ # 工具系统模块
│ └── treasure_tools/ # 实用工具集
└── lib/
├── src/
│ ├── navigation/ # 路由导航
│ ├── l10n/ # 本地化
│ └── starter/ # 应用启动
└── main.dart
class FxApplication with FxStarter<AppConfig> {
@override
Widget get app => const AppBlocProvider(child: FlutterUnit3());
@override
AppStartRepository<AppConfig> get repository => const FlutterUnitStartRepo();
}
职责:
Event → BLoC → State → UI
↑ ↓
└── User Interaction ┘
主要 BLoC:
AppConfigBloc: 应用配置管理WidgetsBloc: 组件数据管理CategoryBloc: 分类管理LikeWidgetBloc: 收藏功能GoRoute(
path: AppRoute.home.path,
routes: [
if (kAppEnv.isDesktopUI)
ShellRoute(
builder: (_, __, Widget child) => AppDeskNavigation(content: child),
routes: body,
),
if (!kAppEnv.isDesktopUI) ...body,
],
)
特点:
abstract class WidgetRepository {
Future<List<WidgetModel>> loadWidgets();
Future<WidgetModel?> findWidget(int id);
Future<List<NodeModel>> loadNodeByWidgetId(int widgetId);
}
实现层:
WidgetDbRepository: 数据库实现MemoryWidgetRepository: 内存缓存实现核心表:
widget: Widget基本信息node: 示例代码节点category: Widget分类详见: 数据表结构总览
class kAppEnv {
static bool get isWeb;
static bool get isDesktopUI;
static bool get isMobile;
}
# Android
flutter build apk --target-platform --split-per-abi
# iOS
flutter build ios
# Web
flutter build web
# Desktop
flutter build windows
flutter build macos
flutter build linux
flutter_lints 进行代码检查pubspec.yaml