Flutter后端服务调用插件supabase_functions的使用

Flutter后端服务调用插件supabase_functions的使用

本包是Dart Edge项目的一部分,使你能够使用Dart编写并部署到Supabase Functions

开始使用

首先,在你的机器上安装Supabase CLI

接下来,全局安装edge包:

pub global activate edge

创建一个新的项目:

edge new supabase_functions new_project

更多详情请访问Dart Edge文档

示例代码

以下是一个简单的示例代码,展示了如何在Flutter中使用supabase_functions插件来调用后端服务。

import 'dart:async';

import 'package:supabase_functions/supabase_functions.dart';

void main() {
  // 初始化SupabaseFunctions实例
  SupabaseFunctions(fetch: (request) async {
    // 打印当前工作目录
    print(Deno.cwd());

    // 读取当前目录下的文件
    final s = Deno.readDir(Deno.cwd());
    final c = Completer();
    
    // 监听文件读取结果
    s.listen((event) {
      print(event.name);
    });

    // 等待所有文件读取完成
    await c.future;

    // 返回响应
    return Response('Hello Supabase from Dart :D');
  });
}

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

1 回复

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


supabase_functions 是一个用于在 Flutter 应用中调用 Supabase Functions 的插件。Supabase Functions 是 Supabase 提供的一种无服务器函数服务,允许你运行自定义的后端逻辑。通过 supabase_functions 插件,你可以在 Flutter 应用中轻松调用这些函数。

安装 supabase_functions 插件

首先,你需要在 pubspec.yaml 文件中添加 supabase_functions 依赖:

dependencies:
  flutter:
    sdk: flutter
  supabase_functions: ^0.1.0 # 请检查最新版本

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

初始化 Supabase

在使用 supabase_functions 之前,你需要初始化 Supabase 客户端。通常,你可以在 main.dart 文件中进行初始化:

import 'package:supabase/supabase.dart';

final supabase = SupabaseClient(
  'https://your-supabase-url.supabase.co',
  'your-supabase-anon-key',
);

调用 Supabase Functions

假设你已经在 Supabase 中创建了一个名为 hello-world 的函数,你可以使用 supabase_functions 来调用它:

import 'package:flutter/material.dart';
import 'package:supabase/supabase.dart';
import 'package:supabase_functions/supabase_functions.dart';

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

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

class HomeScreen extends StatelessWidget {
  final supabase = SupabaseClient(
    'https://your-supabase-url.supabase.co',
    'your-supabase-anon-key',
  );

  Future<void> callFunction() async {
    try {
      final response = await SupabaseFunctions.call(
        supabase,
        'hello-world',
        headers: {'Content-Type': 'application/json'},
        body: {'name': 'Flutter'},
      );

      print('Response: ${response.body}');
    } catch (e) {
      print('Error calling function: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Supabase Functions Example'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: callFunction,
          child: Text('Call Function'),
        ),
      ),
    );
  }
}
回到顶部