Flutter后端服务插件ncmb的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

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

1 回复

更多关于Flutter后端服务插件ncmb的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何在Flutter中使用 ncmb(Nifcloud Mobile Backend)作为后端服务的示例代码。ncmb 是一个方便的后端即服务(BaaS)解决方案,适用于移动应用。

前提条件

  1. Flutter 环境:确保你已经安装了 Flutter 和 Dart SDK。
  2. Nifcloud 账号:你需要在 Nifcloud 上注册并创建一个应用。

步骤

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 ncmb 依赖:

dependencies:
  flutter:
    sdk: flutter
  ncmb: ^latest_version  # 请替换为最新版本号

然后运行 flutter pub get 来获取依赖。

2. 配置 Nifcloud 应用

在 Nifcloud 控制台中,创建一个应用并获取 Application KeyClient 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'),
            ),
          ],
        ),
      ),
    );
  }
}

说明

  1. 初始化:在 main 函数中初始化 ncmb,传入你的 Application KeyClient Key
  2. 保存对象:使用 NCMBObject 创建一个新对象,并设置其属性,然后调用 save 方法将其保存到云端。
  3. 检索对象:使用 NCMBQuery 创建一个查询对象,调用 find 方法检索数据。

结论

以上代码展示了如何在 Flutter 应用中使用 ncmb 插件进行基本的后端服务操作。你可以根据实际需求扩展这些功能,比如添加用户认证、文件存储等。确保你阅读并遵循 ncmb 的官方文档以获取更多高级功能和最佳实践。

回到顶部