← ClaudeAtlas

bmob-database-flutterlisted

Use when implementing Bmob NoSQL database CRUD in a Flutter / Dart project with the official bmob_plugin package. Triggers: flutter pub add bmob_plugin, package:bmob_plugin/bmob_plugin.dart, Bmob.initialize, BmobQuery, BmobObject, BmobUser, BmobFile, BmobGeoPoint, BmobRelation, BmobAcl, BmobError.convert, blog.save(), query.queryObjects(), query.setInclude, Dart Bmob, Flutter Bmob. NOT for JavaScript / Web / Mini Program (use bmob-database-javascript), Android native without Flutter (use bmob-database-android), iOS native without Flutter (use bmob-database-ios), or server-side HTTP only (use bmob-database-restful). If Bmob MCP is configured, call get_project_tables via bmob-mcp before writing code.
bmob/agent-skills · ★ 3 · API & Backend · score 79
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