Flutter has emerged as a popular framework for building cross-platform mobile applications. To enhance these applications with backend functionalities like authentication, database operations, and serverless functions, Supabase provides a robust solution. This tutorial will guide you through the process of integrating Supabase into a Flutter app.
Prerequisites
Before you start, ensure you have the following:
- Basic knowledge of Flutter and Dart
- Flutter environment set up
- Supabase account (create one at Supabase.io)
Step 1: Setting Up Your Supabase Project
- Create a new project in Supabase.
- Note down the
API URL
andanon key
, which will be used in the Flutter app.
// Example of API URL and anon key (not real credentials)
const String supabaseUrl = 'https://yourproject.supabase.co';
const String supabaseAnonKey = 'your-anon-key';
Step 2: Integrating Supabase in Flutter
- Add Supabase to your
pubspec.yaml
:
dependencies:
flutter:
sdk: flutter
supabase_flutter: ^0.2.8
- Initialize Supabase in your main Dart file:
import 'package:supabase_flutter/supabase_flutter.dart';
void main() {
Supabase.initialize(
url: supabaseUrl,
anonKey: supabaseAnonKey,
);
runApp(MyApp());
}
Step 3: Implementing Authentication
Supabase provides easy-to-implement authentication features.
Sign Up a New User
Future<void> signUpUser(String email, String password) async {
final response = await Supabase.instance.client.auth.signUp(email, password);
if (response.error == null) {
// Handle success
} else {
// Handle error
}
}
Sign In an Existing User
Future<void> signInUser(String email, String password) async {
final response = await Supabase.instance.client.auth.signIn(email: email, password: password);
if (response.error == null) {
// Handle success
} else {
// Handle error
}
}
Step 4: Working with the Database
Supabase’s real-time database allows you to perform CRUD operations with ease.
Create a Record
Future<void> addData() async {
final response = await Supabase.instance.client
.from('your_table')
.insert({'key': 'value'})
.execute();
if (response.error == null) {
// Handle success
} else {
// Handle error
}
}
Retrieve Data
Future<void> fetchData() async {
final response = await Supabase.instance.client
.from('your_table')
.select()
.execute();
if (response.error == null) {
// Handle data
} else {
// Handle error
}
}
Step 5: Using Supabase Functions
Supabase Functions are serverless functions that can be triggered by HTTP requests.
Future<void> callFunction() async {
final response = await Supabase.instance.client
.rpc('function_name', params: {'param1': 'value'})
.execute();
if (response.error == null) {
// Handle success
} else {
// Handle error
}
}
Conclusion
Integrating Supabase with Flutter opens up a plethora of possibilities for developing feature-rich apps. By following this tutorial, you should now have a basic Flutter app integrated with Supabase for authentication, database operations, and serverless functions.
Remember to refer to the Supabase documentation for more detailed information and advanced features.