Flutter集成Maya SDK插件flutter_maya_sdk的使用
Client for Maya CMS
一个用于Maya CMS内容的客户端。
如何安装
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'),
),
),
);
}
}