# Flutter 安装配置

**包名**：`xuqm_flutter_sdk` · **版本**：0.2.x · **语言**：Dart

---

## 安装

SDK 通过 Gitea Git 仓库发布，在 `pubspec.yaml` 中配置：

```yaml
dependencies:
  xuqm_flutter_sdk:
    git:
      url: https://xuqinmin.com/xuqmGroup/XuqmGroup-FlutterSDK.git
      ref: v0.2.2
```

> Gitea Package Registry 暂不支持 Dart/Flutter 包格式，因此通过 Git Tag 方式发布。

---

## 模块说明

| 模块 | 包 | 功能 |
|------|-----|------|
| `xuqm_flutter_common` | `packages/common` | 初始化、网络、配置管理 |
| `xuqm_flutter_im` | `packages/im` | 单聊、群聊、消息收发、会话、好友、群组 |
| `xuqm_flutter_push` | `packages/push` | 设备 Token 注册、厂商检测（Android）/ APNs（iOS）|
| `xuqm_flutter_update` | `packages/update` | App 版本检查、商店跳转、APK 下载（Android）|

---

## 配置文件

从平台控制台下载应用的 `.xuqmconfig` 配置文件（例如 `识校宝.xuqmconfig`），放置到 `assets/config/` 目录，并在 `pubspec.yaml` 中声明：

```yaml
flutter:
  assets:
    - assets/config/
```

SDK 启动时会自动扫描该目录并读取 `.xuqmconfig` 文件，无需手动指定路径。文件名不限，只要扩展名为 `.xuqmconfig` 即可。

---

## 初始化

```dart
import 'package:xuqm_flutter_sdk/xuqm_flutter_sdk.dart';

await XuqmSDK.initialize(XuqmInitOptions(
  appKey: 'your_app_key',
  debug: true,
));
```

初始化时会自动向服务端请求远程配置（IM API 地址等），若网络异常则回退到内置默认值。

---

## 多模块统一登录

无论集成了哪些模块（IM、Push、Update），**初始化和登录永远只做一次**：

```dart
// 初始化
await XuqmSDK.initialize(XuqmInitOptions(appKey: 'your_app_key'));

// 登录（业务登录成功后调用一次）
await XuqmImSdk().login('user_001', 'your_user_sig_jwt');

// 登出
await XuqmImSdk().logout();
```

---

## 下一步

- [Flutter IM 接入 →](./im)
- [Flutter 推送接入 →](./push)
- [Flutter 版本更新 →](./update)
