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

번들 명 입력하기 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이랑 연동하는 게 좋을 거 같음.