Flutter集成Appwrite服务插件dart_appwrite的使用

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

Flutter集成Appwrite服务插件dart_appwrite的使用

Appwrite Dart SDK

pub package License API Version Build Status Twitter Account Discord

注意:此SDK兼容Appwrite服务器版本1.6.x。对于旧版本,请查看历史版本

此Dart SDK用于从Dart服务端代码集成Appwrite。如果您正在寻找Flutter SDK,请参考appwrite/sdk-for-flutter

Appwrite是一个开源的后端即服务(BaaS)服务器,旨在简化复杂的开发任务,并提供简单易用的REST API。通过Dart SDK,您可以轻松地将应用程序与Appwrite服务器集成,从而与所有Appwrite后端API和工具进行交互。有关完整API文档和教程,请访问官方文档

Appwrite

安装

pubspec.yaml文件中添加以下依赖:

dependencies:
  dart_appwrite: ^12.1.0

您可以通过命令行安装包:

dart pub add dart_appwrite

入门指南

初始化并发起API请求

一旦添加了依赖项,使用SDK非常简单;只需在代码中导入该包,设置Appwrite凭据,然后开始发起API调用。下面是一个简单的示例:

import 'package:dart_appwrite/dart_appwrite.dart';

void main() async {
  Client client = Client()
    .setEndpoint('http://[HOSTNAME_OR_IP]/v1') // 确保您的端点可访问
    .setProject('5ff3379a01d25') // 您的项目ID
    .setKey('cd868c7af8bdc893b4...93b7535db89')
    .setSelfSigned(); // 仅在开发模式下使用自签名SSL证书时使用

  Users users = Users(client);

  try {
    final user = await users.create(
      userId: ID.unique(),
      email: "email@example.com",
      phone: "+123456789",
      password: "password",
      name: "Walter O'Brien"
    );
    print(user.toMap());
  } on AppwriteException catch(e) {
    print(e.message);
  }
}

错误处理

Appwrite Dart SDK会抛出带有messagecoderesponse属性的AppwriteException对象。您可以通过捕获AppwriteException来处理任何错误,并根据提供的错误信息向用户显示消息或自行处理。以下是示例:

Users users = Users(client);

try {
  final user = await users.create(
    userId: ID.unique(),
    email: "email@example.com",
    phone: "+123456789",
    password: "password",
    name: "Walter O'Brien"
  );
  print(user.toMap());
} on AppwriteException catch(e) {
  // 向用户显示消息或根据需要执行其他操作
  print(e.message);
}

示例代码

初始化Appwrite客户端

Client client = Client();

client
    .setEndpoint('https://localhost/v1') // 您的Appwrite端点
    .setProject('5e8cf4f46b5e8') // 您的项目ID
    .setSelfSigned() // 生产环境中移除
;

创建新用户

Users users = Users(client);

User result = await users.create(
    userId: ID.unique(),
    email: "email@example.com",
    phone: "+123456789",
    password: "password",
    name: "Walter O'Brien"
);

获取用户资料

Users users = Users(client);

User profile = await users.get(
    userId: '[USER_ID]',
);

上传文件

Storage storage = Storage(client);

InputFile file = InputFile(path: './path-to-file/image.jpg', filename: 'image.jpg');

storage.createFile(
    bucketId: '[BUCKET_ID]',
    fileId: '[FILE_ID]', // 使用'unique()'自动生成唯一ID
    file: file,
    permissions: [
      Permission.read(Role.any()),
    ],
)
.then((response) {
    print(response); // 文件已上传!
})
.catchError((error) {
    print(error.response);
});

所有示例和API功能都可以在官方Appwrite文档中找到。

更多资源

贡献

本库由Appwrite自定义SDK生成器自动生成。有关如何帮助我们改进此SDK的信息,请在发送拉取请求之前阅读贡献指南

许可证

请参阅BSD-3-Clause许可证以获取更多信息。


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

1 回复

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


当然,以下是一个如何在Flutter项目中集成并使用dart_appwrite插件来与Appwrite服务进行交互的示例代码。

前提条件

  1. Flutter 环境:确保你已经安装了Flutter和Dart开发环境。
  2. Appwrite 项目:你需要在Appwrite平台上创建一个项目,并获取项目的API密钥和端点URL。

步骤

  1. 创建Flutter项目(如果还没有):
flutter create my_flutter_app
cd my_flutter_app
  1. 添加dart_appwrite依赖

pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  dart_appwrite: ^<最新版本号>  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

  1. 配置Appwrite客户端

在你的Flutter项目的lib目录下,打开main.dart文件,并进行如下修改:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Appwrite Integration',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late Client client;

  @override
  void initState() {
    super.initState();

    // 替换为你的Appwrite项目ID和API密钥
    String projectId = 'your_project_id';
    String apiKey = 'your_api_key';
    String endpoint = 'https://your_appwrite_endpoint.com/v1';

    client = Client(
      endpoint: endpoint,
      project: projectId,
      key: apiKey,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Appwrite Integration'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            try {
              // 示例:获取数据库集合的文档
              String databaseId = 'your_database_id';
              String collectionId = 'your_collection_id';

              var response = await client.database.getCollectionDocuments(
                databaseId: databaseId,
                collectionId: collectionId,
              );

              print(response.data);
              // 更新UI或处理响应数据
            } catch (e) {
              print('Error: $e');
            }
          },
          child: Text('Get Collection Documents'),
        ),
      ),
    );
  }
}

注意事项

  1. 替换占位符:将your_project_idyour_api_keyhttps://your_appwrite_endpoint.com/v1your_database_idyour_collection_id替换为你实际的Appwrite项目信息。
  2. API文档:确保你已经阅读并理解了dart_appwrite插件的API文档,以了解如何调用其他可用的Appwrite服务。

这个示例展示了如何在Flutter中集成dart_appwrite插件,并通过调用Appwrite的数据库服务来获取集合中的文档。你可以根据需要进一步扩展和修改这个示例来调用其他Appwrite服务。

回到顶部