# rocket.chat开源聊天APP软件 **Repository Path**: hlw422/rocket_flutter ## Basic Information - **Project Name**: rocket.chat开源聊天APP软件 - **Description**: rocket.chat 手机端聊天系统 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-12 - **Last Updated**: 2026-06-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rocket.Chat Flutter 客户端 基于 Flutter 开发的 Rocket.Chat 即时通讯客户端,支持完整的聊天、好友、在线状态等功能。 ## 功能特性 ### 用户认证 - 用户注册(用户名、邮箱、密码) - 用户登录(用户名/邮箱 + 密码) - JWT Token 自动管理 - 自动登录状态保持 ### 聊天功能 - 实时消息收发(WebSocket DDP) - 聊天列表展示 - 消息历史记录 - 文件/图片上传 - 消息已读/未读状态 ### 好友系统 - 发送好友请求 - 接受/拒绝好友请求 - 好友列表管理 - 通过私信模拟好友关系 ### 在线状态 - 实时在线状态显示 - 状态类型:在线、离线、忙碌、离开 - 状态指示器组件 ### 其他功能 - 个人资料编辑 - 深色/浅色主题切换 - 多平台支持(Android、iOS、Web、Windows、macOS、Linux) ## 技术架构 ### 技术栈 | 技术 | 用途 | |------|------| | **Flutter** | 跨平台 UI 框架 | | **Provider** | 状态管理 | | **Dio** | HTTP 客户端 | | **web_socket_channel** | WebSocket 通信 | | **go_router** | 路由管理 | | **shared_preferences** | 本地存储 | | **cached_network_image** | 图片缓存 | | **image_picker** | 图片选择 | | **file_picker** | 文件选择 | ### 项目结构 ``` lib/ ├── config/ # 配置文件 │ └── api_config.dart ├── models/ # 数据模型 │ ├── user.dart │ ├── room.dart │ └── message.dart ├── providers/ # 状态管理 │ ├── auth_provider.dart │ ├── chat_provider.dart │ ├── friend_provider.dart │ └── presence_provider.dart ├── screens/ # 页面 │ ├── login_screen.dart │ ├── register_screen.dart │ ├── home_screen.dart │ ├── chat_list_screen.dart │ ├── chat_screen.dart │ ├── contacts_screen.dart │ └── settings_screen.dart ├── services/ # 服务层 │ ├── api_service.dart │ ├── auth_service.dart │ ├── chat_service.dart │ ├── friend_service.dart │ ├── storage_service.dart │ ├── user_service.dart │ └── websocket_service.dart ├── widgets/ # 组件 │ └── status_indicator.dart └── main.dart # 应用入口 ``` ### 架构设计 ``` ┌─────────────────────────────────────────────────┐ │ UI Layer │ │ (Screens, Widgets) │ ├─────────────────────────────────────────────────┤ │ State Management │ │ (Providers: Auth, Chat, Friend, Presence) │ ├─────────────────────────────────────────────────┤ │ Service Layer │ │ (API, WebSocket, Storage Services) │ ├─────────────────────────────────────────────────┤ │ Data Layer │ │ (Models, DTOs) │ ├─────────────────────────────────────────────────┤ │ External Services │ │ (Rocket.Chat Server, Local Storage) │ └─────────────────────────────────────────────────┘ ``` ## 快速开始 ### 环境要求 - Flutter SDK >= 3.10.7 - Dart SDK >= 3.10.7 - Android Studio / VS Code - Rocket.Chat 服务器 ### 安装步骤 1. **克隆项目** ```bash git clone https://gitee.com/hlw422/rocket_flutter.git cd rocket_flutter ``` 2. **安装依赖** ```bash flutter pub get ``` 3. **配置服务器地址** 编辑 `lib/config/api_config.dart`: ```dart class ApiConfig { static const String baseUrl = 'http://your-rocket-chat-server:3000'; static const String apiVersion = '/api/v1'; } ``` 4. **运行应用** ```bash # 开发模式 flutter run # Android flutter run -d android # iOS flutter run -d ios # Web flutter run -d chrome # Windows flutter run -d windows ``` ### 构建发布版本 ```bash # Android APK flutter build apk --release # Android App Bundle flutter build appbundle --release # iOS flutter build ios --release # Web flutter build web --release # Windows flutter build windows --release # macOS flutter build macos --release # Linux flutter build linux --release ``` ## 配置说明 ### Rocket.Chat 服务器配置 1. 确保 Rocket.Chat 服务器已启动 2. 启用 REST API(默认已启用) 3. 启用 WebSocket 支持 4. 配置 CORS 允许跨域请求(开发环境) ### API 端点 | 功能 | 端点 | 方法 | |------|------|------| | 登录 | `/api/v1/login` | POST | | 注册 | `/api/v1/users.register` | POST | | 获取用户信息 | `/api/v1/users.info` | GET | | 获取聊天室列表 | `/api/v1/im.list` | GET | | 获取消息历史 | `/api/v1/im.history` | GET | | 发送消息 | `/api/v1/chat.postMessage` | POST | | 上传文件 | `/api/v1/rooms.upload/{roomId}` | POST | | 好友请求 | `/api/v1/im.create` | POST | ### WebSocket 连接 ```dart // WebSocket URL ws://your-server:3000/websocket // DDP 协议 { "msg": "connect", "version": "1", "support": ["1"] } ``` ## 使用说明 ### 首次使用 1. 启动应用后进入登录页面 2. 点击"注册"创建新账号 3. 填写用户名、邮箱、密码 4. 注册成功后自动登录 5. 开始添加好友并聊天 ### 添加好友 1. 进入"联系人"页面 2. 点击右上角"+"按钮 3. 输入好友用户名 4. 发送好友请求 5. 等待对方接受 ### 发送消息 1. 在聊天列表选择好友 2. 进入聊天页面 3. 输入消息内容 4. 点击发送按钮 5. 支持发送文件和图片 ### 个人设置 1. 进入"设置"页面 2. 编辑个人资料(昵称、邮箱) 3. 切换主题(深色/浅色) 4. 退出登录 ## 开发指南 ### 添加新功能 1. **创建数据模型** (`lib/models/`) ```dart class NewModel { final String id; final String name; NewModel({required this.id, required this.name}); factory NewModel.fromJson(Map json) { return NewModel( id: json['_id'], name: json['name'], ); } } ``` 2. **创建服务** (`lib/services/`) ```dart class NewService { final ApiService _api = ApiService(); Future getData() async { final response = await _api.get('/endpoint'); return NewModel.fromJson(response.data); } } ``` 3. **创建 Provider** (`lib/providers/`) ```dart class NewProvider with ChangeNotifier { NewModel? _data; bool _isLoading = false; NewModel? get data => _data; bool get isLoading => _isLoading; Future fetchData() async { _isLoading = true; notifyListeners(); _data = await NewService().getData(); _isLoading = false; notifyListeners(); } } ``` 4. **创建页面** (`lib/screens/`) ```dart class NewScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer( builder: (context, provider, child) { if (provider.isLoading) { return CircularProgressIndicator(); } return Text(provider.data?.name ?? ''); }, ); } } ``` 5. **注册 Provider** (`lib/main.dart`) ```dart MultiProvider( providers: [ ChangeNotifierProvider(create: (_) => NewProvider()), // ... other providers ], child: MaterialApp(...), ) ``` ### 代码规范 - 遵循 Dart 官方代码规范 - 使用 `flutter analyze` 检查代码质量 - 使用 `flutter format` 格式化代码 - 提交前运行测试:`flutter test` ## 常见问题 ### Q: 无法连接到服务器 A: 检查以下配置: - 服务器地址是否正确 - 网络连接是否正常 - 服务器是否允许跨域请求 - API 端点是否正确 ### Q: WebSocket 连接失败 A: 检查以下配置: - WebSocket URL 是否正确 - 服务器是否支持 WebSocket - 网络防火墙设置 ### Q: 文件上传失败 A: 检查以下配置: - 文件大小是否超过限制 - 文件格式是否支持 - 服务器存储空间是否充足 ### Q: 消息发送失败 A: 检查以下配置: - 用户是否已登录 - 聊天室是否存在 - 网络连接是否正常 ## 性能优化 ### 图片优化 - 使用 `cached_network_image` 缓存图片 - 压缩上传图片 - 使用适当的图片尺寸 ### 网络优化 - 使用连接池 - 实现请求重试机制 - 缓存常用数据 ### 内存优化 - 及时释放资源 - 使用 `dispose` 方法 - 避免内存泄漏 ## 安全说明 - JWT Token 安全存储 - HTTPS 加密传输 - 输入数据验证 - 防止 XSS 攻击 - 防止 CSRF 攻击 ## 更新日志 ### v1.0.0 (2024-01-01) - 初始版本发布 - 实现用户认证功能 - 实现聊天功能 - 实现好友系统 - 实现在线状态显示 ## 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 ## 联系方式 - 作者: hlw422 - 邮箱: [your-email@example.com] - 项目地址: https://gitee.com/hlw422/rocket_flutter ## 致谢 - [Flutter](https://flutter.dev/) - [Rocket.Chat](https://rocket.chat/) - [Provider](https://pub.dev/packages/provider) - [Dio](https://pub.dev/packages/dio) ## 支持 如果这个项目对你有帮助,请给一个 Star 支持一下!