bmob-database-flutterlisted
Install: claude install-skill bmob/agent-skills
# Bmob Database — Flutter / Dart SDK
官方 Flutter 插件 **[`bmob_plugin`](https://pub.dev/packages/bmob_plugin)**(源码 [`bmob-flutter-sdk/data_plugin`](https://github.com/bmob/bmob-flutter-sdk/tree/master/data_plugin))。数据模型 **继承 `BmobObject` + JSON 序列化**(与 Android 类似),查询用泛型 **`BmobQuery<T>`**,异步返回 **`Future`** + `.then` / `.catchError`。
完整 API 以 [BmobDocs Flutter 文档](https://github.com/bmob/BmobDocs/blob/master/mds/data/flutter/index.md) 为准;agent 可直接 WebFetch `metadata.docs_raw`。
## 核心原则
**1. 安装与引用**
```bash
flutter pub add bmob_plugin
```
```dart
import 'package:bmob_plugin/bmob_plugin.dart';
```
**2. 初始化** — 控制台 → 设置 → 应用密钥 → **Secret Key**、**API 安全码**;**不要**在客户端填 `masterKey`(第三个可选参数仅服务端场景���。
```dart
// main() 或 App 启动最早处
Bmob.initialize(secretKey, apiSafe);
// 不推荐:Bmob.initialize(secretKey, apiSafe, masterKey);
```
**3. 上线换备案域名** — `resetDomain` 必须在 `initialize` **之前**(开发期内置测试域名有请求次数限制):
```dart
Bmob.resetDomain("http://api.yourdomain.com");
Bmob.initialize(secretKey, apiSafe);
```
**4. 自定义表模型** — 每张业务表一个 Dart 类 **extends `BmobObject`**,并实现 `fromJson` / `toJson`(见 [`references/model-and-init.md`](references/model-and-init.md))。表名默认与类名一致(如 `Blog` → 表 `Blog`)。
**5. 错误处理** — 统一用 `BmobError.convert(e)` 取 `code` / `error`:
```dart
}).catchError((e) {
final err = BmobError.convert(e);
print('${err.code}: ${err.error}');
});
```
**6. 保留字段** — `objectId`、`createdAt`、`updatedAt`、`ACL` 由 SDK / 服务端维护;业务代码在更新 / 删除时必须设置 `objectId`。
## 安全清单
- [ ] **客户端不要传 Master Key** 给 `B