Flutter와 Supabase를 활용한 리얼타임 데이터 기능 구현은, 애플리케이션에 실시간 업데이트를 쉽게 추가할 수 있는 방법 중 하나입니다. Supabase는 Firebase와 유사한 오픈소스 백엔드 서비스로, 실시간 데이터베이스 기능을 지원합니다. 이 블로그 글에서는 Flutter와 Supabase를 연동하여 실시간 데이터 업데이트를 처리하는 방법을 설명하겠습니다.
### 1. Supabase 프로젝트 설정
우선, Supabase에서 프로젝트를 설정해야 합니다.
1. [Supabase](https://supabase.io) 웹사이트에 접속하여 로그인 후 프로젝트를 생성합니다.
2. 프로젝트가 생성되면 **API URL**과 **Anon Key**를 복사해 둡니다. 이 정보는 Flutter 애플리케이션에서 Supabase와 통신하는 데 필요합니다.
---
### 2. Flutter 프로젝트 설정
Flutter 프로젝트에서 Supabase와 통합하기 위해서는 `supabase_flutter` 패키지를 사용해야 합니다.
#### 2.1. 프로젝트 생성 및 패키지 설치
1. 새로운 Flutter 프로젝트를 생성합니다:
flutter create realtime_app
cd realtime_app
2. `pubspec.yaml` 파일에 `supabase_flutter` 패키지를 추가합니다:
dependencies:
flutter:
sdk: flutter
supabase_flutter: ^0.4.0 # 최신 버전 확인
3. 패키지를 설치합니다:
flutter pub get
---
### 3. Supabase 초기화
`lib/main.dart` 파일을 열어 Supabase를 초기화합니다. Supabase 클라이언트를 설정하고, Supabase에 연결하는 코드를 작성합니다.
import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Supabase 초기화
await Supabase.initialize(
url: 'https://your-supabase-url.supabase.co', // Supabase 프로젝트 URL
anonKey: 'your-anon-key', // Supabase 프로젝트 키
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Realtime App',
home: RealtimePage(),
);
}
}
---
### 4. 리얼타임 데이터 구독
이제 Supabase의 리얼타임 기능을 활용하여 데이터베이스의 변경 사항을 실시간으로 구독하는 방법을 살펴보겠습니다. `RealtimePage` 위젯을 만들어서, 데이터를 구독하고 UI에 반영하는 코드를 작성합니다.
#### 4.1. RealtimePage 위젯
`lib/realtime_page.dart` 파일을 생성하여 실시간 데이터베이스 업데이트를 구독하는 코드를 작성합니다.
import 'package:flutter/material.dart';
import 'package:supabase_flutter/supabase_flutter.dart';
class RealtimePage extends StatefulWidget {
@override
_RealtimePageState createState() => _RealtimePageState();
}
class _RealtimePageState extends State<RealtimePage> {
final SupabaseClient supabase = Supabase.instance.client;
List<dynamic> messages = [];
@override
void initState() {
super.initState();
// 실시간 데이터베이스 구독
supabase
.from('messages')
.stream(primaryKey: ['id'])
.listen((List<Map<String, dynamic>> snapshot) {
setState(() {
messages = snapshot;
});
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Realtime Messages'),
),
body: ListView.builder(
itemCount: messages.length,
itemBuilder: (context, index) {
final message = messages[index];
return ListTile(
title: Text(message['content']),
subtitle: Text('ID: ${message['id']}'),
);
},
),
);
}
}
이 코드는 `messages`라는 테이블에서 실시간 업데이트를 구독하고, 변경 사항이 발생할 때마다 `ListView`에 업데이트합니다.
---
### 5. 데이터 삽입 테스트
마지막으로 Supabase 콘솔이나 애플리케이션에서 데이터를 삽입하여 실시간 데이터 기능이 제대로 작동하는지 확인해 보겠습니다. Supabase의 데이터베이스 테이블에 새로운 메시지를 추가하면, Flutter 애플리케이션에서도 실시간으로 변경 사항이 반영됩니다.
---
### 결론
Flutter와 Supabase를 사용하여 간단하게 실시간 데이터 업데이트 기능을 구현할 수 있었습니다. Supabase의 리얼타임 API는 웹소켓을 사용하여 실시간으로 데이터를 업데이트하며, Flutter에서 이를 손쉽게 구독하여 애플리케이션에 적용할 수 있습니다.
이제 여러분은 Supabase를 활용한 다양한 실시간 기능을 더 확장하여 구현할 수 있습니다. 데이터를 실시간으로 확인하고 싶을 때는 이런 방법을 사용해 보세요!
'Programming > Flutter' 카테고리의 다른 글
Flutter의 CodePush, ShoreBird (0) | 2024.12.08 |
---|---|
Flutter와 Supabase (0) | 2024.08.05 |
Flutter 인기 라이브러리 - Hive 데이터베이스 (0) | 2024.05.08 |
[Flutter] Provider로 상태관리 (0) | 2024.04.02 |
Flutter 시작하기 (0) | 2023.06.03 |