Flutter后端服务集成插件appwrite_dart_wrapper的使用
Flutter后端服务集成插件appwrite_dart_wrapper的使用
Features(功能)
-
startWrapper 记录请求头和请求负载,并解析请求为头部、负载和变量。
Future<void> start(final req, final res) async => await startWrapper( req, res, biz, log: true, debug: true, // 默认设置为false // 如果设置为null,则不能使用'debug' // 如果设置为'your-appwrite.io-user-id',只有该用户可以使用'debug' // 可以从请求体覆盖变量 debugUserId: 'your-appwrite.io-user-id or null', // 默认为null );
-
databases_wrapper 提供创建、更新、获取、查询文档的闭包函数。
final fnCeateDoc = buildFnCreateRecord( client, databaseId: '<your-db-id>', collectionId: '<your-doc-collection-id>', ); // 使用 await fnCeateDoc(documentId: ID.unique(), data: { "name": 'test1', "age": 123, });
-
functions_wrapper 提供创建执行的闭包函数。
-
local_test 提供本地测试功能。
Getting Started(开始使用)
dart pub add appwrite_dart_wrapper
Usage(使用示例)
在main.dart
文件中添加以下代码:
import 'package:appwrite_dart_wrapper/appwrite_dart_wrapper.dart';
Future<void> start(final req, final res) async =>
await startWrapper(
req,
res,
biz,
log: true,
debugUserId: '<your appwrite admin user id or null>',
);
Additional Information(附加信息)
Function Variables(函数变量)
Appwrite 提供的函数变量,除了你自己定义的变量之外,你还可以从函数代码中访问这些变量。这些变量提供了关于你的执行运行时环境的信息。
Name | Description |
---|---|
APPWRITE_FUNCTION_ID | 你的函数的唯一ID。 |
APPWRITE_FUNCTION_NAME | 你的函数的名称。 |
APPWRITE_FUNCTION_DEPLOYMENT | 你的函数代码部署的唯一ID。 |
APPWRITE_FUNCTION_TRIGGER | 当通过所选范围触发时为 ‘event’,当通过HTTP请求或Appwrite控制台触发时为 ‘http’,当通过计划任务触发时为 ‘schedule’。 |
APPWRITE_FUNCTION_RUNTIME_NAME | 你的函数运行时名称。可以是任何Appwrite支持的执行运行时。 |
APPWRITE_FUNCTION_RUNTIME_VERSION | 你的函数运行时版本。 |
APPWRITE_FUNCTION_EVENT | 仅在函数触发为 ‘event’ 时可用。此变量值可以是任何Appwrite系统事件。 |
APPWRITE_FUNCTION_EVENT_DATA | 当你的函数触发器为 ‘event’ 时可用。此变量值包含一个JSON格式的字符串,其中包含特定事件数据。 |
APPWRITE_FUNCTION_DATA | 仅在通过SDK或HTTP API及Appwrite控制台触发函数时可用。此变量值包含一个任意格式的字符串。如果自定义数据为JSON格式,必须在函数代码内部解析。 |
APPWRITE_FUNCTION_PROJECT_ID | 你的函数的项目ID。 |
APPWRITE_FUNCTION_USER_ID | 触发函数执行的用户的userId。在Appwrite控制台触发的执行将被前缀为 “admin-”。 |
APPWRITE_FUNCTION_JWT | 为执行你的函数的用户生成的JSON Web Token。 |
cmd
dart pub publish --server=https://pub.dev
完整示例代码
以下是一个完整的示例代码,展示了如何使用appwrite_dart_wrapper
插件。
import 'package:appwrite_dart_wrapper/appwrite_dart_wrapper.dart';
import 'package:dart_appwrite/dart_appwrite.dart';
import 'package:dart_appwrite/src/client.dart';
Future<void> main() async {
await start(
Req(variables: {
"APPWRITE_FUNCTION_ENDPOINT": "https://api.appwrite.io",
"APPWRITE_FUNCTION_PROJECT_ID": "your project id",
"APPWRITE_FUNCTION_API_KEY": "your project key"
}), Res(onData: (awesome, s) {
print("awsome: $awesome");
}));
}
Future<void> start(final req, final res) async =>
await startWrapper(
req,
res,
biz,
log: true,
debug: true, // 默认设置为false
debugUserId: 'your-appwrite.io-user-id or null',
);
Future<Result> biz(
Map<String, dynamic> headers,
Map<String, dynamic> payload,
Map<String, String> vars,
Client client,
) async {
// 创建文档示例
final fnCeateDoc = buildFnCreateRecord(
client,
databaseId: '<your-db-id>',
collectionId: '<your-doc-collection-id>',
);
// 使用
await fnCeateDoc(documentId: ID.unique(), data: {
"name": 'test1',
"age": 123,
});
// 测试错误报告
// throw "hahaha";
return Result.rOk(msg: 'Yes Awesome, payloads $payload, vars $vars');
}
更多关于Flutter后端服务集成插件appwrite_dart_wrapper的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter后端服务集成插件appwrite_dart_wrapper的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成并使用 appwrite_dart_wrapper
插件来与 Appwrite 后端服务进行交互的代码案例。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 appwrite_dart_wrapper
依赖:
dependencies:
flutter:
sdk: flutter
appwrite_dart_wrapper: ^x.y.z # 请替换为最新版本号
然后运行 flutter pub get
以获取依赖。
2. 初始化 Appwrite 客户端
在你的 Flutter 项目中,创建一个文件(例如 appwrite_client.dart
)来初始化 Appwrite 客户端:
import 'package:appwrite_dart_wrapper/appwrite.dart';
class AppwriteService {
late Client client;
AppwriteService({required String projectId, required String apiKey, String endpoint = 'https://[YOUR_APPWRITE_INSTANCE_ID].appwrite.io/v1'}) {
client = Client(
endpoint: endpoint,
project: projectId,
key: apiKey,
);
}
}
3. 使用 Appwrite 客户端进行数据库操作
下面是一个简单的例子,展示如何使用初始化后的 Appwrite 客户端执行数据库操作,例如读取集合中的数据:
import 'package:flutter/material.dart';
import 'appwrite_client.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late AppwriteService appwriteService;
List<Map<String, dynamic>> documents = [];
@override
void initState() {
super.initState();
// 替换为实际的 projectId 和 apiKey
appwriteService = AppwriteService(
projectId: '[YOUR_PROJECT_ID]',
apiKey: '[YOUR_API_KEY]',
);
fetchDocuments();
}
void fetchDocuments() async {
try {
var response = await appwriteService.client.database.listDocuments(
collectionId: '[YOUR_COLLECTION_ID]', // 替换为实际的集合ID
);
setState(() {
documents = response['documents'] ?? [];
});
} catch (e) {
print('Error fetching documents: $e');
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Appwrite Flutter Integration'),
),
body: ListView.builder(
itemCount: documents.length,
itemBuilder: (context, index) {
var doc = documents[index];
return ListTile(
title: Text(doc['$id'] ?? 'Unknown ID'), // 假设集合中有一个名为 `$id` 的字段作为标识符
subtitle: Text(doc['name'] ?? 'Unknown Name'), // 假设集合中有一个名为 `name` 的字段
);
},
),
),
);
}
}
4. 运行应用
确保你的 Appwrite 实例正在运行,并且已经创建了项目、集合,并插入了数据。然后运行你的 Flutter 应用:
flutter run
这将启动你的 Flutter 应用,并显示从 Appwrite 数据库集合中读取的数据。
注意事项
- 确保你替换了
[YOUR_APPWRITE_INSTANCE_ID]
、[YOUR_PROJECT_ID]
、[YOUR_API_KEY]
和[YOUR_COLLECTION_ID]
为实际的值。 - 在实际开发中,请注意不要将敏感信息硬编码到客户端代码中,可以考虑使用环境变量或安全存储机制。
- 根据你的需求,你可以进一步扩展
AppwriteService
类,以包含更多的 Appwrite API 调用。
这个代码案例展示了如何使用 appwrite_dart_wrapper
插件在 Flutter 应用中集成 Appwrite 后端服务,并进行基本的数据库操作。