Site icon Flutter Packages | Pub dev Packages – Flutter Mobile App World

A Dart client for Supabase

supabase-dart

A Dart client for Supabase.

What is Supabase

Supabase is an open source Firebase alternative. We are a service to:

Status

Docs

supabase-dart mirrors the design of supabase-js. Find the documentation here.

Usage example

Database

import 'package:supabase/supabase.dart';

main() {
  final client = SupabaseClient('supabaseUrl', 'supabaseKey');

  // Select from table `countries` ordering by `name`
  final response = await client
      .from('countries')
      .select()
      .order('name', ascending: true)
      .execute();
}

Realtime

import 'package:supabase/supabase.dart';

main() {
  final client = SupabaseClient('supabaseUrl', 'supabaseKey');

  // Set up a listener to listen to changes in `countries` table
  final subscription = await client
      .from('countries')
      .on(SupabaseEventTypes.all, (payload) {
        // Do something when there is an update
      })
      .subscribe();

  // remember to remove subscription when you're done
  client.removeSubscription(subscription);
}

Realtime data as Stream

To receive relatime updates, you have to first enable Realtime on from your Supabase console. You can read more here on how to enable it.

import 'package:supabase/supabase.dart';

main() {
  final client = SupabaseClient('supabaseUrl', 'supabaseKey');

  // Set up a listener to listen to changes in `countries` table
  final subscription = await client
      .from('countries')
      .stream()
      .order('name')
      .limit(30)
      .execute()
      .listen(_handleCountriesStream);

  // remember to remove subscription when you're done
  subscription.cancel();
}

Authentication

import 'package:supabase/supabase.dart';

main() {
  final client = SupabaseClient('supabaseUrl', 'supabaseKey');

  // Sign up user with email and password
  final response = await client
      .auth
      .signUp('email', 'password');
}

Storage

import 'package:supabase/supabase.dart';

main() {
  final client = SupabaseClient('supabaseUrl', 'supabaseKey');

  // Create file `example.txt` and upload it in `public` bucket
  final file = File('example.txt');
  file.writeAsStringSync('File content');
  final storageResponse = await client
      .storage
      .from('public')
      .upload('example.txt', file);
}

Authentication

Initialize a SupabaseClient by passing your Supabase URL and Supabase KEY. The keys can be found in your supabase project in /setting/API.

final client = SupabaseClient('supabaseUrl', 'supabaseKey');

The client has a auth attribute (of type GoTrueClient) that you can use to authenticate your users using supabase.

Sign up

Use the signUp method, which returns a GotrueSessionResponse.

If the error attribute is null, the request was successful and the method returns data of type Session.

// Sign up user with email and password
final response = await client.auth.signUp('email', 'password');

if (response.error != null) {
  // Error
  print('Error: ${response.error?.message}');
} else {
  // Success
  final session = response.data;
}

Sign in

Use the signIn method. It works similar to the signUp method.

// Sign in user with email and password
final response = await client.auth.signIn(email: 'email', password: 'password');

if (response.error != null) {
  // Error
  print('Error: ${response.error?.message}');
} else {
  // Success
  final session = response.data;
}

Sign out

Use the signOut method, which returns a GotrueResponse.

Also for the sign out check that error is null to know if the request was successful.

// Sign out user
final response = await client.auth.signOut();

if (response.error != null) {
  // Error
  print('Error: ${response.error?.message}');
} else {
  // Success
}

Check out the Official Documentation to learn all the other available methods.

Guides

Contributing

License

This repo is licenced under MIT.

Download source code on GitHub

Exit mobile version