Flutter와 함께 Supabase 사용하기

in kr-dev 커뮤니티3 years ago

이번에 모바일 앱 개발에 Supabase와 Flutter를 결합하여 사용하기로 결정했습니다.

Google Firebase, AWS Amplify, 그리고 Supabase 중에서 어떤 것을 선택할지 고민했으나, 사용자 경험과 비용 측면에서 Supabase가 더 편리하다고 판단하여 Supabase를 선택하게 되었습니다.

또한, Supabase는 Flutter SDK를 제공하지만, React Native SDK는 공식적으로 지원하지 않는다는 점.
그리고 전 세계적으로 플러터가 더 인기가 있으며, 보안 측면에서도 Flutter를 통한 개발이 더 안전하다고 판단했습니다.

Supabase with Flutter 프로젝트 셋팅은 다음과 같이 진행합니다:

1. Flutter 앱 만들기

flutter create my_app

2. Supabase 클라이언트 라이브러리 설치

pubspec.yaml 파일을 열고 supabase_flutter를 추가

supabase_flutter: ^1.6.2

3. Supabase 클라이언트 초기화

lib/main.dart 파일을 수정

import 'package:supabase_flutter/supabase_flutter.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Supabase.initialize(
    url: 'YOUR_SUPABASE_URL',
    anonKey: 'YOUR_SUPABASE_ANON_KEY',
  );
  runApp(MyApp());
}

4. 앱에서 DB 쿼리

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Countries',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key});

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  final _future = Supabase.instance.client
      .from('countries')
      .select<List<Map<String, dynamic>>>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: FutureBuilder<List<Map<String, dynamic>>>(
        future: _future,
        builder: (context, snapshot) {
          if (!snapshot.hasData) {
            return const Center(child: CircularProgressIndicator());
          }
          final countries = snapshot.data!;
          return ListView.builder(
            itemCount: countries.length,
            itemBuilder: ((context, index) {
              final country = countries[index];
              return ListTile(
                title: Text(country['name']),
              );
            }),
          );
        },
      ),
    );
  }
}

5. 안드로이드 설정

android/app/src/main/AndroidManifest.xml 파일에 다음을 추가

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  (html comment removed:  Required to fetch data from the internet. )
  <uses-permission android:name="android.permission.INTERNET" />
  (html comment removed:  ... )
</manifest>

6. 앱 시작

flutter run
Sort:  
 3 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

H4LAB Delegation Status (2023/09/02)
https://www.steemit.com/@h4lab/2023-09-02-status

@h4lab님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

H4LAB Delegation Status (2023/09/03)
https://www.steemit.com/@h4lab/2023-09-03-status

@h4lab님이 당신을 멘션하였습니다.
멘션을 받고 싶거나 받지 않으시려면 댓글을 남겨주세요. 빠른 시일내에 반영하도록 하겠습니다.

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.081
BTC 60924.48
ETH 1580.88
USDT 1.00
SBD 0.47