Files
social-app/docs/bugs/LinksyApp强制依赖ChatBloc.md
T

50 lines
1.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LinksyApp 强制依赖 ChatBloc
## 问题描述
`LinksyApp` (app.dart) 作为应用根节点,被迫在 `MultiBlocProvider` 中注入 `ChatBloc`
```dart
return MultiBlocProvider(
providers: [
BlocProvider<AuthBloc>.value(value: authBloc),
BlocProvider<ChatBloc>(
create: (_) => ChatBloc(apiClient: sl<IApiClient>()),
),
],
...
);
```
这导致:
1. 应用启动时就创建 `ChatBloc` 实例(内存浪费)
2. `LinksyApp` 需要知道"存在 ChatBloc 这个 Feature"
3. 违反单一职责原则:根节点应只负责全局配置,不应了解具体 Feature
## 根本原因
`HomeScreen` 是默认首页,其内部需要 `ChatBloc`。为了让它通过 `context.read<ChatBloc>()` 获取,被迫在根节点提供。
## 正确做法
ChatBloc 应该在路由级别按需注入:
```dart
GoRoute(
path: '/',
builder: (context) => BlocProvider(
create: (_) => ChatBloc(apiClient: sl<IApiClient>()),
child: const HomeScreen(),
),
)
```
## 相关文件
- `apps/lib/app/app.dart`
- `apps/lib/features/home/presentation/screens/home_screen.dart`
## 修复优先级
**中等** - 功能正常但架构不合理,属于技术债