본문 바로가기
Develop

flutter) firebase - database 사용하기

by B-e 2022. 7. 9.
반응형

 

firebase 프로젝트 연동은 아래 글을 참고해주세요.

https://bright-effact.tistory.com/entry/flutter-Firebase-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-Mac

 

flutter) Firebase 연동하기 <Mac>

flutter에서 firebase를 공식지원한 뒤로 firebase 연동이 아주 쉬워졌습니다. 그럼에도 처음 접하는 개발자에게는 험난한 길이기에 구글링을 하다가 결국 이전방식대로 연동을 하기도 하는데요, 이

bright-effect.com

 

먼저 firebase에 database를 활성화해야한다.

Firebase Console의 좌측 메뉴에서 빌드-Firestore Database를 클릭, '데이터베이스 만들기' 를 클릭한다.

테스트를 할 것임으로 '테스트 모드에서 시작'을 선택한다.(추후 권한 설정을 통해 변경할 수 있음.)

 

 

데이터를 저장하는 물리적 서버 위치이다. 어디를 선택해도 상관없지만 이왕이면 가까운곳에 있는게 0.0001초라도 빨리 송수신되지 않을까 해서 가장 가까운 asia-northeast3을 선택했다.

 

'사용 설정'을 누르고 잠시 기다리면 database 저장공간이 만들어지고, 아래와 같은 화면이 나온다면 준비가 완료된 것이다.

 

 

이제 flutter 프로젝트에서 데이터 입력, 출력을 해보자.

 

flutter 프로젝트에서 firebase-firestore를 추가해야한다.

이외의 플러그인은 아래 공식문서에서 확인할 수 있다.

(https://firebase.google.com/docs/flutter/setup?authuser=0&hl=ko&platform=web#available-plugins)

 

flutter에서 firebase를 공식지원한 뒤로 pubspec.yaml 파일을 손대지 않고 터미널에서 손쉽게 플러그인을 추가할 수 있다.

프로젝트의 터미널에 아래 명령어를 입력한다.

flutter pub add cloud_firestore

정상적으로 추가되었다면 pubspec.yaml 파일에 cloud_firestore가 추가된 것이 확인된다.

 

pubspec.yaml에 cloud_firestore가 추가된것을 확인했다면, 본격적으로 데이터를 입,출력 해보자

 

데이터 입력

데이터 입력 코드는 아래와같다.

final doc = FirebaseFirestore.instance.doc('경로');

doc.sec({'데이터Key':'데이터'});

실행코드는 아래를 참고해보자.

 

 

데이터 출력

데이터 출력 코드는 아래와 같다.

final doc = FirebaseFirestore.instance.doc(('Datas/sample'));

final data = await doc.get();

print(data.data());

 

 

전체 코드

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

import 'package:firebase_core/firebase_core.dart';
import 'firebase_options.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  runApp(MaterialApp(home: HomeScreen()));
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
          ElevatedButton(
            onPressed: () {
              setData();
            },
            child: Text('데이터 입력'),
          ),
          ElevatedButton(
            onPressed: () {
              getData();
            },
            child: Text("데이터 확인"),
          ),
        ]));
  }

  void setData() {
    final doc = FirebaseFirestore.instance.doc('Datas/sample');

    doc.set({'testKey': 'testValue'});
  }

  Future<void> getData() async {
    final doc = FirebaseFirestore.instance.doc(('Datas/sample'));

    final data = await doc.get();

    print(data.data());
  }
}

 

 

발생 가능한 에러:

POD에러

에러메시지:

Error running pod install Error launching application on iPhone SE (3rd generation).

 

해결방법:

https://bright-effact.tistory.com/entry/Flutter-POD-%EC%97%90%EB%9F%AC-Cocoapods-%EC%97%90%EB%9F%AC-firebase

 

Flutter) POD 에러 (Cocoapods 에러 / firebase)

***POD 에러(코코아팟)*** Error running pod install 위와같은 에러가 발생한 분은 아래 순서를 따라 진행해주세요. 프로젝트 터미널에서 아래 명령어 입력 sudo arch -x86_64 gem install ffi os패스워드를..

bright-effect.com

 

 

MissingPlugin에러

에러메시지:

[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: MissingPluginException(No implementation found for method DocumentReference#set on channel plugins.flutter.io/firebase_firestore)

 

해결방법:

프로젝트 터미널에서

flutter clean

flutter run

차례대로 입력

 

IOS버전 에러

에러메시지:

[!] Automatically assigning platform `iOS` with version `11.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

 

해결방법:

ios-Runner - Podfile 가장 상단

# platform :ios, '11.0' 의 주석 제거(# 제거)

 

반응형

댓글