Flutter集成Maya SDK插件flutter_maya_sdk的使用

Client for Maya CMS

一个用于Maya CMS内容的客户端。

Version GitHub license By lynn


如何安装

Flutter:

$ flutter pub add flutter_maya_sdk

pubspec.yaml

在您的包的pubspec.yaml文件中添加以下行:

dependencies:
  flutter_maya_sdk: ^0.0.1

如果您的编辑器不支持自动更新依赖项,请运行以下命令:

flutter pub get

导入它

现在在您的Dart代码中添加以下导入:

import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

如何初始化

最小化初始化

import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

// 最小化全局实例初始化
Maya.init(
    server: Uri.parse("http://[SERVER HOST]"),
    token: "[API TOKEN]",
);
// 全局实例可通过 `Maya.instance` 访问

// 或者
Maya maya = Maya(
    server: Uri.parse("http://[SERVER HOST]"),
    token: "[API TOKEN]",
);

Maya不在根Web文件夹中

import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

// 自定义路径 
Maya.init(
    server: Uri.https("[SERVER HOST]","/Maya/folder"),
    // OR
    // server: Uri.http("[SERVER HOST]","/Maya/folder"),
    // OR
    // server: Uri.parse("http://[SERVER HOST]/Maya/folder"),
    token: "[API TOKEN]",
);

// 或者
Maya maya = Maya(
    server: Uri.parse("http://[SERVER HOST]"),    
    // OR
    // server: Uri.http("[SERVER HOST]","/Maya/folder"),
    // OR
    // server: Uri.parse("http://[SERVER HOST]/Maya/folder"),
    token: "[API TOKEN]",
);

所有请求的过滤器

import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

// 永远不会获取被删除的字段
Maya.init(
    server: Uri.https("[SERVER HOST]","/Maya/folder"),
    token: "[API TOKEN]",
    defaultFilter : {
      r"$or" :[
        { "delete" : {$eq : false} },
        { "delete" : {$eq : null} },
        {
          "delete" : {
            r"$exist" : false
          }
        }
      ]
    }
);

(可选)声明端点

import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

// API声明
Maya.init(
    server: Uri.https("[SERVER HOST]","/Maya/folder"),
    token: "[API TOKEN]",
    api : { 
      // 集合
      "myCollection" :  {
        "collection": "users", // 真实的集合名称
        "sort": {"login": 1}, // 默认排序
        "fields": [ // 只获取这些字段
          "nom",
          "prenom",
          "parent",
          "login",
          "enabled",
          "_create_by"
        ]
      },
      // 表单
      "myForm" :  {
        "form": "sendmail" // 真实的表单名称
      },
      // 单例
      "mySingleton" : {
        "singleton": "configurations" // 真实的单例名称
      },
      // 带虚拟属性的集合(映射)
      "slides" : {
        "collection": "collection_name", // Maya中的集合名称
        "limit": 5, // 从服务器获取数据时的限制
        "sort": { // 排序结果
          "_o": 1
        },
        "fields": [ // 从服务器获取的字段,其他字段将被忽略
          "title",
          "image",
          "description",
          "backgroundColor",
          "fontColor"
        ],
        "map": { // 更改结果对象中的属性值或设置新属性
          // 可以从模板构建字符串
          "image": "{{SERVER}}{{image.path}}",
          // 或将属性值映射到另一个属性
          "body" : "{{description}}"
        },
      },
    }
);

如何使用

读取数据

// 获取所有元素
List<Map<String, dynamic>> results = await MayaCollection("api_access").find(
  cache: Duration(hours : 1), // [可选] 缓存结果
);

// 获取第一个元素
Map<String, dynamic> result = await MayaCollection("user").findOne(
  filter: {
    "login" : "root",
    "pwd" : "secret",
    r"$or": [
      {"disable": false},
      {
        "disable": {
          r"$exists": false,
        },
      },
    ],
  },
);

// 获取特定元素
Map<String, dynamic> result = await MayaCollection("user").get("[My Super ID]");
// 只获取某些字段
Map<String, dynamic> result = await MayaCollection("user").get("[My Super ID]", fields : ["nom", "prenom"]);

// 获取一页元素
List<Map<String, dynamic>> results = await MayaCollection("api_access").find(
  limit : 10,
  page : 2
); // 页码从0开始,设置page为0表示第一页,page为1表示第二页

// 使用过滤器获取元素,您可以使用page、limit、sort等与过滤器一起使用
List<Map<String, dynamic>> results = await MayaCollection("api_access").find(
  filter: {
    published : true,
  },
);

读取未声明的端点

要读取未声明的端点,只需传递名称并使用前缀指定类型(表单、单例、集合或自定义URL)。

前缀 类型 使用
* 集合 Maya("my_collection")Maya("*my_collection")
@ 单例 Maya("@my_singleton")
# 表单 Maya("#my_form")
! 自定义Maya API Maya("!my/custom/url")

保存数据

// 向Maya(表单和集合)发送数据
Map<String, dynamic> data = await MayaCollection("api_access").save(
  data : {
    published : false,
    title : "Cool",
    description : "I'm juste a test :-p",
  },
);

发送到自定义URL

// 向自定义Maya URL发送数据
Map<String, dynamic> data = await MayaApi("!/my/custom/url/gps").save(
  data : {
    lat : -19.016682,
    long : 26.806641,
    alt : 15,
  },
);

Maya URLs

以系统用户身份登录

Map<String, dynamic> user = Maya.instance.login('username','xxpasswordxx')

以系统用户身份登出

bool logout = await Maya.instance.logout()

创建/更新用户

Maya.instance.saveSystemUser({...}) // 用户数据 (user, name, email, active, group)

获取用户

Maya.instance.systemUsers([Map<String, dynamic> filter]) // (可选) 您可以传递过滤器

获取资产

Maya.instance.assets([Map<String, dynamic> filter]) // (可选) 您可以传递过滤器

获取缩略图URL

Maya.instance.image(imagePath, 
  width : width,
  height : height,
  quality : quality,
  domain : domain,
  o : o,
  base64 : base64,
);

获取所有单例

Maya.listSingletons()

获取所有集合

Maya.listCollections();

获取集合模式

Maya("collectionname").schema();

更新集合模式

Maya("collectionname").updateSchema(fields); // fields 是 List<Map<String,dynamic>>
1 回复

更多关于Flutter集成Maya SDK插件flutter_maya_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


要在Flutter项目中集成Maya SDK插件 flutter_maya_sdk,你需要按照以下步骤进行操作。假设你已经有一个Flutter项目,并且已经安装了Flutter SDK。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_maya_sdk 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  flutter_maya_sdk: ^1.0.0  # 请根据实际情况填写版本号

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

2. 初始化Maya SDK

在你的Flutter应用中,你需要在应用启动时初始化Maya SDK。通常可以在 main.dart 文件中进行初始化。

import 'package:flutter/material.dart';
import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化Maya SDK
  await MayaSDK.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的Maya API Key
    environment: MayaEnvironment.sandbox,  // 或者 MayaEnvironment.production
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Maya SDK Demo',
      home: HomeScreen(),
    );
  }
}

3. 使用Maya SDK功能

根据 flutter_maya_sdk 提供的功能,你可以在应用中使用Maya SDK的各种功能。例如,创建一个支付页面。

import 'package:flutter/material.dart';
import 'package:flutter_maya_sdk/flutter_maya_sdk.dart';

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Maya SDK Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 创建支付请求
            final paymentRequest = PaymentRequest(
              amount: 100.0,
              currency: 'PHP',
              description: 'Test Payment',
              successUrl: 'https://yourwebsite.com/success',
              failUrl: 'https://yourwebsite.com/fail',
            );

            // 发起支付
            final result = await MayaSDK.createPayment(paymentRequest);

            if (result.status == PaymentStatus.success) {
              // 支付成功
              print('Payment successful: ${result.paymentId}');
            } else {
              // 支付失败
              print('Payment failed: ${result.errorMessage}');
            }
          },
          child: Text('Pay with Maya'),
        ),
      ),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!