FireBase

App 에서 곧장 Database 에 저장하지 않음

이상한 데이터일 수 있으니

그래서 서버를 사용한다.

근데 서버대신 만들어주는 Firebase를 많이 사용함.

회원로그인 데이터베이스 입출력 사진 업로드 등등을 사용할 수 있음.

일일 5만회 무료 5GB까지 무료

설치

firebase_core: ^1.10.6
firebase_auth: ^3.3.4
cloud_firestore: ^3.1.5

등록

https://console.firebase.google.com/u/0/?pli=1

여기 들어가서 구글 계정으로 만들 것.

세팅

https://console.firebase.google.com/u/0/project/fluttergram-7efd5/overview 들어가서 세팅하는 부분이 나옴

iOS

iOS 세팅

번들 명 입력하기 android/app/build.gradle 안에

applicationId 를 검색해보면 나옴 여기보면


이렇게 나오는데

맘에 안들면 바꾸는 방
```bat
dart pub global activate rename

이렇게하면 뭐가 설치가 됨.

dart pub global run rename --bundleId com.jinhakapply.instagram

그러면 알아서 바뀜.

Android

비스무리하게 작업하면 됨

Firebase 세팅

dart pub global activate flutterfire_cli 터미널에 입력

npm firebase 도 해서 설치해야함. 이거 달라진 점임

flutterfire configure

해주면 설치 진행

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

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

  runApp(어쩌구~~);

} 

위 코드 설치

Database 도 사용할 수 있음

Realtime Database FireStore 두종류가 있음.

관계형 Database : 데이터를 엑셀처럼 저장하는 곳임

FireStore는 NoSQL 임.

Map 자료형 그대로 저장이 가능함.

Firestore 에 데이터 저장하고 싶다면 collection / document 의 개념

워드 파일을 저장하고 싶다면 폴더를 하나 만들어서 그 안에 저장

폴더 : collection 파일 : document

document 하나는 map 자료라고 생각하면 됨.

암튼 세팅하고

데이터 가져오기

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

final firestore = FirebaseFirestore.instance;

class Shop extends StatefulWidget {
  const Shop({Key? key}) : super(key: key);

  @override
  State<Shop> createState() => _ShopState();
}


class _ShopState extends State<Shop> {
  getData() async{
    var result = await firestore.collection('product').doc('fOQsBI6HIv8PG72Sj8XA').get();
    print(result['name']);
  }

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    getData();
  }
  @override
  Widget build(BuildContext context) {
    return Container(
      child: Text('샵페이지임!'),
    );
  }
}

위와 같이 하면 됨.

연결이 어떻게 되는건가 의문인데.. 아마 gradle 안에 있는 applicationid 를 맞춰줘서 가능한게 아닌가 싶음.

for (var doc in result.docs){
      print(doc['name']);
      print(doc['price']);
    }

반복문으로 보여줄 수 있음.

Firebase와의 연결 가능.

언제나 중요한 예외처리 if 문으로 검사해서 for문 돌리면 됨.

if(result.docs.isNotEmpty)

혹은 try catch 문법 사용

FireStore 에 데이터 저장은

addData() async {
    await firestore.collection('product').add({'name': '내복', 'price': '5000'});
  }

위와 같이 하면 들어가는 것을 확인할 수 있다.

데이터 가져올 때 필터링

var result = await firestore.collection('product').where().get();

where를 사용한다.

doc.delete(); delete 를 사용하면 삭제도 가능함.

update도 가능함

결론

Firestore 꽤 쉬움.

근데 약간 불안정함 홈페이지 UI도 이상하고

걍 우리는 백엔드 만들어서 MSSQL이랑 연동하는 게 좋을 거 같음.