supabase_flutter 2.8.1 copy "supabase_flutter: ^2.8.1" to clipboard
supabase_flutter: ^2.8.1 copied to clipboard

Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.

2.8.1 #

2.8.0 #

2.7.0 #

2.6.0 #

  • FIX: Upgrade web_socket_channel for supporting web: ^1.0.0 and therefore WASM compilation on web (#992). (7da68565)
  • FEAT: Add third-party auth support (#999). (c68d44d1)

2.5.11 #

  • Update a dependency to the latest release.

2.5.10 #

  • Update a dependency to the latest release.

2.5.9 #

  • FIX(gotrue): Ensure a single initialSession is emitted. (#975). (6323f9fd)

2.5.8 #

  • FIX: Fix duplicate initial deeplink handling when using AppLinks >= 6.0.0 (#965). (74747f0d)

2.5.7 #

  • Update a dependency to the latest release.

2.5.6 #

  • Update a dependency to the latest release.

2.5.5 #

  • Update a dependency to the latest release.

2.5.4 #

  • Update a dependency to the latest release.

2.5.3 #

  • FIX: Keep compatible with app_links 6.0.0 and 5.0.0 (#918). (04a59dca)

2.5.2 #

  • FIX: Update app_links dependency to accept v5.0.0 (#908). (7e9b9054)

2.5.1 #

  • Update a dependency to the latest release.

2.5.0 #

  • FEAT(gotrue,supabase_flutter): New auth token refresh algorithm (#879). (99931681)

2.4.0 #

  • FEAT: Add detectSessionInUri option to optionally disable deep link observer. (#848). (cb9aed80)
  • DOCS: Fixed imprecision in Custom Local Storage README.md (#853). (6655e576)

2.3.4 #

  • FIX(gotrue,supabase_flutter): Throw error when parsing auth URL that contains an error description. (#839). (afc4ce51)
  • FIX: Correct the class name used for custom storage (#825). (a7216626)

2.3.3 #

  • REFACTOR: Remove hive dependency and add instructinos to migration from v1 while persisting the auth state (#823). (26885c20)

2.3.2 #

  • FIX: Remove platform check to start deep link observer on every platform including Linux (#815). (9b05eeac)

2.3.1 #

  • Update a dependency to the latest release.

2.3.0 #

  • FIX(supabase_flutter): Add timeout to Hive.openBox to fix hanging issue (#799). (7fc3ed0b)
  • FEAT(gotrue,supabase_flutter): Add signInWithSSO method (#798). (87c16327)

2.2.0 #

  • FEAT(supabase_flutter): Update app_link to v3.5.0, to add Linux support for deep links (#792). (5ad7a674)

2.1.0 #

  • FIX: Update Provider to OAuthProvider in readme (#778). (0585ee96)
  • FEAT(gotrue,supabase_flutter): Add identity linking and unlinking methods. (#760). (6c0c922d)

2.0.2 #

  • Update a dependency to the latest release.

2.0.1 #

  • Update a dependency to the latest release.
  • FIX: fix(supabase_flutter): export signInWithOAuth() and generateRawNonce() (#763)

2.0.0 #

  • Graduate package to a stable release. See pre-releases prior to this version for changelog entries. Upgrade guide can be found here.

2.0.0-dev.4 #

  • FIX: PKCE flow not emitting password recovery event (#744). (65859bd2)
  • FIX: update sign in with Apple instruction on readme (#746). (a4897d06)
  • FIX: use SharedPreferences on web (#738). (d0cc2015)
  • FIX(supabase_flutter): session migration from hive to sharedPreferences now works properly (#731). (c81cf07f)

2.0.0-dev.3 #

  • Update a dependency to the latest release.

2.0.0-dev.2 #

  • FIX(supabase_flutter): The session is not restored when the application is started. (#702). (e1cc576c)

2.0.0-dev.1 #

  • Update a dependency to the latest release.

2.0.0-dev.0 #

Note: This release has breaking changes.

  • FEAT(supabase_flutter): use SharedPreferences for access token (#608). (9d72a59d)
  • DOCS: update readme to v2 (#647). (514cefb4)
  • BREAKING REFACTOR: remove signInWithApple method and make generateRawNonce public (#650). (2f9fe41f)
  • BREAKING REFACTOR: create package specific configs (#640). (53cd3e09)
  • BREAKING REFACTOR: many auth breaking changes (#636). (7782a587)
  • BREAKING REFACTOR: use Dart 3 (#598). (02c4071a)

1.10.25 #

  • Update native Google sign-in instructions on README

1.10.24 #

  • Update a dependency to the latest release.

1.10.23 #

  • Update a dependency to the latest release.

1.10.22 #

  • Update a dependency to the latest release.

1.10.21 #

  • Update a dependency to the latest release.

1.10.20 #

  • Update a dependency to the latest release.

1.10.19 #

  • Update a dependency to the latest release.

1.10.18 #

  • Update a dependency to the latest release.

1.10.17 #

  • Update a dependency to the latest release.

1.10.16 #

  • Update a dependency to the latest release.

1.10.15 #

  • Update a dependency to the latest release.

1.10.14 #

  • FIX(realtime_client,supabase): pass apikey as the initial access token for realtime client (#596). (af8e368b)

1.10.13 #

  • FIX(supabase_flutter): update readme.md on the notes about broadcast (#589). (d0f4e2dd)

1.10.12 #

  • Update a dependency to the latest release.

1.10.11 #

  • Update a dependency to the latest release.

1.10.10 #

  • Update a dependency to the latest release.

1.10.9 #

  • FIX(supabase_flutter): update sign_in_with_apple version constraints to allow v5.0.0 (#548). (bc977431)

1.10.8 #

  • FIX: update the google auth setup instruction to use reversed client ID (#542). (fa52378a)

1.10.7 #

  • FIX(supabase_flutter): update README.md with additional imports and code to enable Google sign in (#531). (de2628fa)

1.10.6 #

  • update README.md to include native auth instructions

1.10.5 #

  • Update a dependency to the latest release.

1.10.4 #

  • Update a dependency to the latest release.

1.10.3 #

  • Update a dependency to the latest release.

1.10.2 #

  • Update a dependency to the latest release.

1.10.1 #

  • FIX: Update http dependency constraints (#491). (825d0737)

1.10.0 #

  • FIX: Format the files to adjust to Flutter 3.10.1 (#475). (eb0bcd95)
  • FEAT: update dependency constraints to sdk < 4.0.0 (#474). (7894bc70)

1.9.2 #

  • FIX(supabase_flutter): prevent Platform.environment use on web (#468). (de5a6300)

1.9.1 #

  • chore: update the repo to be a monorepo for all sub-libraries

[1.9.0] #

  • feat: add pkce support #432
    // Initialize Supabase with AuthFlowType.pkce to enable PKCE flow for deep link related auth
    await Supabase.initialize(
      url: supabaseUrl,
      anonKey: supabaseKey,
      authFlowType: AuthFlowType.pkce,
    );
    

[1.8.1] #

  • fix: ensure that Google login on Android always opens in external browser #455

[1.8.0] #

  • feat: allow signInWithOAuth with platformDefault option to open in app webview for iOS #431

[1.7.0] #

  • feat: Add signInWithApple method #437
    final AuthResponse response = await supabase.auth.signInWithApple();
    
  • fix: upgrade webview_flutter to 4.0.0 #427

[1.6.2] #

  • fix: persist session to local storage on onAuthStateChanged event with a session #422

[1.6.1] #

  • fix: log errors from onAuthStateChange #416
  • fix: catch initial session #418

[1.6.0] #

  • feat: Added custom WebView for OAuth (LaunchMode.inAppWebView) #355
  • fix: update supabase to v1.6.1
    • add setAuth() function to storage
    • fix: keep one storage and functions instance to persist auth

[1.5.0] #

  • feat: update supabase-dart to 1.6.0 #381
    • add support for signInWithIdToken
  • fix: declare web support #392

[1.4.2] #

  • fix: show web support on pub.dev #373
  • refactor: update example #374

[1.4.1] #

  • fix: print stack trace on the console while in debug mode when auth error occurs

[1.4.0] #

  • feat: add realtimeClientOptions to Supabase.initialize()
  • feat: update supabase to v1.5.0
    • add realtimeClientOptions to SupabaseClient
    • add missing options parameter to rpc
    • use single isolate for functions and postgrest and add isolate parameter to SupabaseClient
    • update postgrest to v1.2.2
      • improve comment docs
      • deprecate returning parameter of .delete()
    • update storage to v1.2.2
      • properly parse content type
      • correct path parameter documentation
    • update gotrue to v1.4.1
      • onAuthStateChanged now emits the latest AuthState
      • downgrade minimum collection version to support wider range of Flutter SDK versions

[1.3.1] #

  • chore: update readme.md file #335

[1.3.0] #

  • feat: add authScreenLaunchMode to auth.signInWithOAuth() to change OAuth sign-in screen behavior #323
    await supabase.auth.signInWithOAuth(
      Provider.goodle,
      authScreenLaunchMode: LaunchMode.inAppWebView,
    );
    
  • fix: only start deep link observer on supported platforms #333
  • feat: update supabase to v1.3.0
    • fix: handle update and delete on record that wasn't found properly using stream #167
    • feat: update gotrue to v1.4.0
      • add support for MFA
        // Start the enrollment process for a new Multi-Factor Authentication (MFA) factor
        final res = await client.mfa
          .enroll(issuer: 'MyFriend', friendlyName: 'MyFriendName');
        
        // Prepares a challenge used to verify that a user has access to a MFA factor.
        final res = await client.mfa.challenge(factorId: factorId1);
        
        // Verifies a code against a challenge.
        final res = await client.mfa
                .verify(factorId: factorId1, challengeId: challengeId, code: getTOTP());
        
        Read more about MFA with Supabase here
      • paginate admin.listUsers()
        auth.admin.listUsers(page: 2, perPage: 10);
        
    • feat: update postgrest to v1.2.1
    • fix: update realtime to v1.0.2
      • export realtime presence
    • feat: update storage to v1.2.0
      • add transform option to createSignedUrl(), getPublicUrl(), and .download() to transform images on the fly
        final signedUrl = await storage.from(newBucketName).createSignedUrl(uploadPath, 2000,
                    transform: TransformOptions(
                      width: 100,
                      height: 100,
                    ));
        final publicUrl = storage.from(bucket).getPublicUrl(path,
                transform: TransformOptions(width: 200, height: 300));
        final file = await storage.from(newBucketName).download(uploadPath,
                transform: TransformOptions(
                  width: 200,
                  height: 200,
                ));
        

[1.2.2] #

  • fix: bug where auth callback URL is not correctly parsed #292

[1.2.1] #

  • fix: Only parse deep links if it contains access_token #284
  • chore: update and add some links in Readme.md #286

[1.2.0] #

  • feat: update supabase to v1.2.0
    • add createUser(), deleteUser(), and listUsers() to admin methods.
  • feat: add storage retry option to enable storage to auto retry failed upload attempts #280
    // The following will initialize Supabase that will retry failed uploads up to 25 times,
    // which is about 10 minutes of retrying.
    await Supabase.initialize(
      supabaseUrl,
      supabaseAnonKey,
      storageRetryAttempts: 25,
    );
    

[1.1.0] #

  • fix: await for the initial deeplink to be handled during auth initialize #262
  • feat: update supabase to v1.1.0
    • fix: stream filter other than eq is not properly applied.
    • fail to getSessionFromUrl throws error on onAuthStateChange
      supabase.onAuthStateChange.listen((data) {
        // handle auth state change here
      }, onError: (error) {
        // handle error here
      });
      
    • feat: add generic types to .select()
      // data is `List<Map<String, dynamic>>`
      final data = await supabase.from('users').select<List<Map<String, dynamic>>>();
      
      // data is `Map<String, dynamic>`
      final data = await supabase.from('users').select<Map<String, dynamic>>().eq('id', myId).single();
      

[1.0.1] #

  • fix: update sample code on readme.md

[1.0.0] #

  • chore: v1.0.0 release 🚀
  • BREAKING: update supabase to v1.0.0
    • BREAKING: .stream() now takes a named parameter primaryKey instead of a positional argument.
      supabase.from('my_table').stream(primaryKey: ['id']);
      
    • feat: .stream() has 5 additional filters: neq, gt, gte, lt, lte (148
    • auth.signUp() now uses named parameters
      // Before
      final res = await supabase.auth.signUp('example@email.com', 'password');
      // After
      final res = await supabase.auth.signUp(email: 'example@email.com', password: 'password');
    
    • auth.signIn() is split into different methods
      // Magic link sign-in
      // Before
      final res = await supabase.auth.signIn(email: 'example@email.com');
      // After
      final res = await supabase.auth.signInWithOtp(email: 'example@email.com');
    
      // Email and password sign-in
      // Before
      final res = await supabase.auth.signIn(email: 'example@email.com', password: 'password');
      // After
      final res = await supabase.auth.signInWithPassword(email: 'example@email.com', password: 'password');
    
    • auth.onAuthStateChange is now a stream
      // Before
      supabase.auth.onAuthStateChange((event, session) {
        // ...
      });
      // After
      final subscription = supabase.auth.onAuthStateChange.listen((data) {
        final AuthChangeEvent event = data.event;
        final Session? session = data.session;
      });
      // Don't forget to cancel the subscription when you're done
      subscription.cancel();
    
    • auth.update() is renamed to auth.updateUser()
      // Before
      final res = await supabase.auth.update(
          UserAttributes(
            email: 'new@email.com',
            data: {
              'username': 'new_username',
            },
          ),
      );
      // After
      final res = await supabase.auth.updateUser(
          UserAttributes(
            email: 'new@email.com',
            data: {
              'username': 'new_username',
            },
          ),
      );
    
    • SupabaseAuth.instance.onAuthChange() is now removed and supabase.auth.onAuthStateChange() should be used instead
  • BREAKING: set minimum required Flutter version to 2.8.0

[1.0.0-dev.9] #

  • fix: update supabase to v1.0.0-dev.9
    • fix: recreate a PostgrestClient with proper auth headers when calling .rpc() (#143)
    • fix: allow custom headers to be set for SupabaseClient (#144)
    • fix: stream error will emit the entire exception and the stack trace (#145)
    • fix: update realtime to v1.0.0-dev.5
      • fix: bug where it throws exception when listening to postgres changes on old version of realtime server
      • fix: sends null for access_token when not signed in (#53)

[1.0.0-dev.8] #

  • BREAKING: update supabase to v1.0.0-dev.7
    • update payload shape on old version of realtime server to match the new version in realtime v1.0.0-dev.3
    • fix: encoding issue with some languages in gotrue v1.0.0-dev.4
    • fix: update insert documentation to reflect new returning behavior in postgrest v1.0.0-dev.4

[1.0.0-dev.7] #

[1.0.0-dev.6] #

  • BREAKING: update supabase package v1.0.0-dev.5
    • deprecated: .stream() no longer needs .execute()
    • BREAKING: eq filter on .stream() is a separate method now
    // before
    Supabase.instance.client.from('my_table:title=eq.Supabase')
      .stream(['id'])
      .order('created_at')
      .limit(10)
      .execute()
      .listen((payload) {
        // do something with payload here
      });
    
    // now
    Supabase.instance.client.from('my_table')
      .stream(['id'])
      .eq('title', 'Supabase')
      .order('created_at')
      .limit(10)
      .listen((payload) {
        // do something with payload here
      });
    
    • BREAKING: listening to database changes has a new API
    • feat: added support for broadcast and presence
    final channel = Supabase.instance.client.channel('can_be_any_string');
    
    // listen to insert events on public.messages table
    channel.on(
        RealtimeListenTypes.postgresChanges,
        ChannelFilter(
          event: 'INSERT',
          schema: 'public',
          table: 'messages',
        ), (payload, [ref]) {
      print('database insert payload: $payload');
    });
    
    // listen to `location` broadcast events
    channel.on(
        RealtimeListenTypes.broadcast,
        ChannelFilter(
          event: 'location',
        ), (payload, [ref]) {
      print(payload);
    });
    
    // send `location` broadcast events
    channel.send(
      type: RealtimeListenTypes.broadcast,
      event: 'location',
      payload: {'lat': 1.3521, 'lng': 103.8198},
    );
    
    // listen to presence states
    channel.on(RealtimeListenTypes.presence, ChannelFilter(event: 'sync'),
        (payload, [ref]) {
      print(payload);
      print(channel.presenceState());
    });
    
    // subscribe to the above changes
    channel.subscribe((status) async {
      if (status == 'SUBSCRIBED') {
        // if subscribed successfully, send presence event
        final status = await channel.track({'user_id': myUserId});
      }
    });
    

[1.0.0-dev.5] #

  • chore: add example app in example directory
  • fix: WidgetsBinding warning

[1.0.0-dev.4] #

  • BREAKING: update supabase package v1.0.0-dev.4
  • feat: accept custom headers
  • feat: add add X-Client-Info header

[1.0.0-dev.3] #

[1.0.0-dev.2] #

  • feat: custom http client

[1.0.0-dev.1] #

  • feat: add Mac OS and Windows support for deep links
  • BREAKING: Remove SupabaseAuthRequiredState as well as overriding methods in SupabaseAuthState
// Before

await Supabase.initialize(
  url: 'SUPABASE_URL',
  anonKey: 'SUPABASE_ANON_KEY',
);
...

// Class extending `SupabaseAuthState` or `AuthRequiredState` was necessary
// to persist auth state
class AuthState<T extends StatefulWidget> extends SupabaseAuthState<T> {
  ...
}

// After

// Initializing Supabase is all you need to do to persist auth state
// Deep links will also be automatically handled when you initialize Supabase.
await Supabase.initialize(
  url: 'SUPABASE_URL',
  anonKey: 'SUPABASE_ANON_KEY',
);

...

// You can get the initial session of the user with `SupabaseAuth.instance.initialSession`
try {
    final initialSession = await SupabaseAuth.instance.initialSession;
} catch(error) {
    // Handle errors in session initial recovery here
}

// You should now use `onAuthStateChanged` as the 
Supabase.instance.client.auth.onAuthStateChange((event, session) {
    // handle sign-in/signups here
});
  • fix: OAuth should open in an external browser
  • BREAKING: update supabase package v1.0.0-dev.1

[0.3.3] #

  • feat: update supabase package v0.3.6

[0.3.2] #

  • chore: add basic example codes on readme.md

[0.3.1+3] #

  • fix: OAuth authentication page should open in an external browser

[0.3.1+2] #

  • chore: update supabase package v0.3.4+1

[0.3.1+1] #

  • fix: lint error on Flutter 2.X
  • chore: add multiple Flutter version to the CI pipeline

[0.3.1] #

  • feat: update supabase to v0.3.4

[0.3.0] #

  • BREAKING: update supabase to v0.3.0

[0.2.12] #

  • chore: update supabase-dart package v0.2.14

[0.2.11] #

  • chore: update supabase-dart package v0.2.13

[0.2.10] #

  • chore: update supabase-dart package v0.2.12
  • chore: update documents

[0.2.9] #

  • feat: signing out now triggers onUnauthenticated()
  • feat: export supabase package so that underlying symbols can be imported
  • fix: update code samples to reflect breaking change from v0.0.3
  • fix: typos on code samples on readme.md

[0.2.8] #

  • chore: update supabase to v0.2.7

[0.2.7] #

  • chore: update supabase to v0.2.6

[0.2.6] #

  • fix: export local_storage

[0.2.5] #

  • chore: update supabase to v0.2.5

[0.2.4] #

  • chore: update supabase to v0.2.4

[0.2.3] #

  • chore: update supabase to v0.2.3

[0.2.2] #

  • chore: update supabase to v0.2.2

[0.2.1] #

  • chore: update supabase to v0.2.1

[0.2.0] #

  • chore: update supabase to v0.2.0

[0.1.0] #

  • BREAKING CHANGE: Supabase.initialize is now Future<void>
  • chore: update supabase to v0.1.0
  • feat: using hive to persist session by default

[0.0.8] #

  • chore: update supabase to v0.0.8

[0.0.7] #

  • chore: update supabase to v0.0.7

[0.0.6] #

  • chore: update supabase to v0.0.5

[0.0.5] #

  • chore: update supabase to v0.0.4

[0.0.4] #

  • chore: update supabase to v0.0.3

[0.0.3] #

  • BREAKING CHANGE: rework Supabase singleton with Supabase.initialize and Supabase.instance
  • chore: update docs

[0.0.2] #

  • feat: support custom localStorage with fallback to SharedPreferences as default

[0.0.1] #

  • chore: update supabase, url_launcher packages

[0.0.1-dev.5] #

  • fix: launch url in the current tab for flutter web
  • fix: SupabaseAuthRequiredState to trigger onAuthenticated when user session available

[0.0.1-dev.4] #

  • feat: support flutter web

[0.0.1-dev.3] #

  • chore: update supabase to v0.0.1

[0.0.1-dev.2] #

  • feat: support nested authentication flow with startAuthObserver() and stopAuthObserver()
  • feat: support SupabaseAuthRequiredState
  • feat: support enable/disable debug log
  • refactor: tidy up

[0.0.1-dev.1] #

  • Initial pre-release.
681
likes
160
pub points
99%
popularity

Publisher

verified publishersupabase.io

Flutter integration for Supabase. This package makes it simple for developers to build secure and scalable products.

Homepage
Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

app_links, async, crypto, flutter, http, logging, meta, path_provider, shared_preferences, supabase, url_launcher

More

Packages that depend on supabase_flutter