Flutter后端服务插件ncmb的使用
Flutter后端服务插件ncmb的使用
Dart 和 Flutter 库用于 Nifcloud 移动后端(NCMB)。
使用
import 'package:ncmb/ncmb.dart';
void main() {
NCMB('YOUR_APPLICATION_KEY', 'YOUR_CLIENT_KEY');
}
示例
以下是一些示例代码,展示了如何使用 ncmb
插件进行数据存储、用户管理和文件操作等。
数据存储(DataStore)
创建数据(Create data)
NCMBObject item = NCMBObject('Item')
..set('msg', 'Hello World')
..set('array', ['a', 'b'])
..set('int', 1)
..set('name', 'Atsushi');
await item.save();
debugPrint(item.get('objectId'));
更新数据(Update data)
await item.set('name', 'goofmint');
await item.save();
删除数据(Delete data)
await item.delete();
查询数据(Retribe data)
NCMBQuery query = NCMBQuery('Item');
// 查询所有数据
var items = await query.fetchAll();
print(items[0].get('msg'));
// 查询第一条数据
var item2 = await query.fetch();
print(item2.get('msg'));
// 等值查询
query.equalTo('objectId', item.get('objectId'));
var item3 = await query.fetch();
print(item3.get('objectId'));
// 清除条件并设置新的查询条件
query.clear();
query
..notEqualTo('array', ['a', 'b', 'c'])
..limit(2)
..lessThan('int', 4);
items = await query.fetchAll();
print(items.length);
带类型的查询结果
// 字符串类型
item.getString('fieldName');
// 整数类型
item.getInt('fieldName');
// 双精度浮点数类型
item.getDouble('fieldName');
// 布尔类型
item.getBool('fieldName');
// 日期时间类型
item.getDateTime('fieldName');
// 列表类型
item.getList('fieldName');
可以为不存在的字段提供默认值。
// 字符串类型,默认值为空字符串
item.getString('fieldName', defaultValue: '');
// 整数类型,默认值为0
item.getInt('fieldName', defaultValue: 0);
// 双精度浮点数类型,默认值为0
item.getDouble('fieldName', defaultValue: 0);
// 布尔类型,默认值为true
item.getBool('fieldName', defaultValue: true);
// 日期时间类型,默认值为当前时间
item.getDateTime('fieldName', defaultValue: DateTime.now());
// 列表类型,默认值为空列表
item.getList('fieldName', defaultValue: []);
如果既没有默认值也没有该字段,则会抛出异常。
访问控制列表(ACL)
var acl = NCMBAcl();
acl
..setPublicReadAccess(true)
..setPublicWriteAccess(false)
..setRoleWriteAccess('Admin', true)
..setUserWriteAccess('aaaaa', true);
item3.set('acl', acl);
特殊类型(Special type)
items[0]
// 设置类的数据存储对象
..set('item', items[1])
// 设置日期时间
..set('time', DateTime.now())
// 设置地理坐标
..set('geo', NCMBGeoPoint(35.658611, 139.745556));
用户管理(User)
注册(Register)
var userName = 'aaa';
var password = 'bbb';
var user = NCMBUser();
user
..set('userName', userName)
..set('password', password);
await user.signUpByAccount();
登录(Login)
var user = await NCMBUser.login(userName, password);
匿名登录(Anonymous Login)
var user = await NCMBUser.loginAsAnonymous();
检查会话状态(Check session stats)
var user = await NCMBUser.currentUser();
if (user != null && (await user.enableSession())) {
print('Login');
} else {
print('no login');
await user.logout();
}
注销(Logout)
user.logout();
文件操作(File)
上传文件(Upload)
var fileName = 'dart.png';
var blob = await File(fileName).readAsBytes();
var file = await NCMBFile.upload(fileName, blob);
上传文本数据作为文本文件。
var fileName = 'dart.txt';
var file = await NCMBFile.upload(fileName, 'Hello world');
自定义 MIME 类型。
var fileName = 'dart.csv';
var file = await NCMBFile.upload(fileName, 'a,b,c', mimeType: 'text/csv');
下载文件(Download)
var file = await NCMBFile.download('dart.png');
脚本操作(Script)
常用方法(Common method)
var script = NCMBScript('script_test_get.js'); // 脚本名称
script.query('hoge', 'fuga');
script.header('foo1', 'bar1');
script.header('foo2', 'bar2');
// 仅支持 POST 或 PUT 方法
script.body('hoge2', 'fuga2');
script.body('hoge3', 'fuga3');
GET 请求
var result = await script.get();
DELETE 请求
var result = await script.delete();
POST 请求
var result = await script.post();
PUT 请求
var result = await script.put();
更多关于Flutter后端服务插件ncmb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter后端服务插件ncmb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter中使用 ncmb
(Nifcloud Mobile Backend)作为后端服务的示例代码。ncmb
是一个方便的后端即服务(BaaS)解决方案,适用于移动应用。
前提条件
- Flutter 环境:确保你已经安装了 Flutter 和 Dart SDK。
- Nifcloud 账号:你需要在 Nifcloud 上注册并创建一个应用。
步骤
1. 添加依赖
首先,在你的 pubspec.yaml
文件中添加 ncmb
依赖:
dependencies:
flutter:
sdk: flutter
ncmb: ^latest_version # 请替换为最新版本号
然后运行 flutter pub get
来获取依赖。
2. 配置 Nifcloud 应用
在 Nifcloud 控制台中,创建一个应用并获取 Application Key
和 Client Key
。
3. 初始化 ncmb
在你的 Flutter 应用的入口文件(通常是 main.dart
)中初始化 ncmb
:
import 'package:flutter/material.dart';
import 'package:ncmb/ncmb.dart';
void main() {
// 初始化 ncmb
NCMB.initialize(
applicationId: 'your_application_key',
clientKey: 'your_client_key',
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
4. 使用 ncmb
进行数据存储和检索
下面是一个简单的例子,展示如何使用 ncmb
存储和检索数据:
import 'package:flutter/material.dart';
import 'package:ncmb/ncmb.dart';
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter ncmb Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
// 创建一个新的 NCMBObject 实例
final object = NCMBObject('TestObject');
object['name'] = 'Flutter User';
object['age'] = 30;
// 保存对象
try {
await object.save();
print('Object saved: ${object.objectId}');
} catch (e) {
print('Error saving object: $e');
}
},
child: Text('Save Object'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () async {
// 检索对象
try {
final query = NCMBQuery('TestObject');
final results = await query.find();
results.forEach((object) {
print('Retrieved object: ${object.toMap()}');
});
} catch (e) {
print('Error retrieving objects: $e');
}
},
child: Text('Retrieve Objects'),
),
],
),
),
);
}
}
说明
- 初始化:在
main
函数中初始化ncmb
,传入你的Application Key
和Client Key
。 - 保存对象:使用
NCMBObject
创建一个新对象,并设置其属性,然后调用save
方法将其保存到云端。 - 检索对象:使用
NCMBQuery
创建一个查询对象,调用find
方法检索数据。
结论
以上代码展示了如何在 Flutter 应用中使用 ncmb
插件进行基本的后端服务操作。你可以根据实际需求扩展这些功能,比如添加用户认证、文件存储等。确保你阅读并遵循 ncmb
的官方文档以获取更多高级功能和最佳实践。