85 lines
1.9 KiB
Markdown
85 lines
1.9 KiB
Markdown
# 现场上报模块 - 使用示例
|
|
|
|
## 1. 在路由中注册
|
|
|
|
在你的路由配置文件(如 `lib/core/router/app_router.dart`)中添加:
|
|
|
|
```dart
|
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:maibu_satabot_v2/features/v2/report/report.dart';
|
|
|
|
// 在 routes 列表中添加
|
|
GoRoute(
|
|
path: '/report',
|
|
builder: (context, state) => BlocProvider(
|
|
create: (context) => ReportDependencyInjector.createReportCubit(),
|
|
child: const ReportPage(),
|
|
),
|
|
),
|
|
```
|
|
|
|
## 2. 跳转到上报页面
|
|
|
|
在任何页面中,使用以下方式跳转:
|
|
|
|
```dart
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
// 跳转到上报页面
|
|
context.push('/report');
|
|
```
|
|
|
|
## 3. 完整示例
|
|
|
|
```dart
|
|
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
|
|
class SomePage extends StatelessWidget {
|
|
const SomePage({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(title: const Text('示例页面')),
|
|
body: Center(
|
|
child: ElevatedButton(
|
|
onPressed: () {
|
|
// 跳转到现场上报页面
|
|
context.push('/report');
|
|
},
|
|
child: const Text('现场上报'),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
```
|
|
|
|
## 4. 依赖说明
|
|
|
|
### 必需依赖(项目已包含)
|
|
- flutter_bloc: ^9.1.1
|
|
- equatable: ^2.0.8
|
|
- fpdart: ^1.2.0
|
|
- go_router: ^17.0.1
|
|
|
|
### 可选依赖(按需添加)
|
|
如果需要实现真实的图片/视频上传功能,需要添加:
|
|
```yaml
|
|
dependencies:
|
|
image_picker: ^1.1.2
|
|
```
|
|
|
|
## 5. 注意事项
|
|
|
|
1. 确保在跳转前已经配置好路由
|
|
2. BlocProvider 必须在 ReportPage 的父级
|
|
3. 当前使用模拟数据,可直接运行测试
|
|
4. 所有常量已抽取,便于主题定制
|
|
|
|
## 6. 后续开发
|
|
|
|
对接真实 API 时,修改 `lib/features/v2/report/data/datasources/report_remote_datasource_impl.dart` 文件即可。
|