작성
·
155
0
width: 8,
),
StreamBuilder<DocumentSnapshot>(
stream: _followingStream(),
builder: (context, snapshot) {
if(!snapshot.hasData){
print(snapshot.hasData);
print('1');
return Text('로딩중');
}
var data = snapshot.data?.data();
if(data == null ||
data[document['email']] ==null ||
data[document['email']] == false
){
return GestureDetector(
onTap: _follow,
child: Text('팔로우',style: TextStyle(color:Colors.blue,fontWeight: FontWeight.bold),),
);
}
return GestureDetector(
onTap: _follow,
child: Text('팔로우',style: TextStyle(color:Colors.blue,fontWeight: FontWeight.bold),),
);
}
var doc = FirebaseFirestore.instance.collection('following').doc(widget.user.email);
doc.set({
widget.document['email'] : true,
});
추가로 doc.setdata가 set으로 바뀐것 같은데 해당 문법은 following 호출시 단일 데이터값만 변경됩니다.
예를 들어서 ab@naver.com을 팔로우하면 ab@naver.com은 팔로우가 되고 (true로 저장)
그 다음에 ddd@naver.com을 팔로우하면 ab@naver.com은 사라지고 ddd@naver.com은 true로 저장이 됩니다.
찾아보니 update를 사용하면 추가가되는 형식으로 바뀐것 같은데 update를 사용하는게 맞나요?
답변 1
1
if(data == null ||
(data as Map<String, dynamic>)[widget.document['email']] ==null ||
(data as Map<String, dynamic>)[widget.document['email']] == false
){
return GestureDetector(
onTap: _follow,
child: Text('팔로우',style: TextStyle(color:Colors.blue,fontWeight: FontWeight.bold),),
);
}
검색해보니 저렇게 Map으로 사용하는걸로 바뀐것 같습니다! 필요하신 분 참고하시고
update부분만 답변 주시면 감사하겠습니다!!
답이 늦었습니다.
이 부분은 강의 내용의 오류가 맞습니다.
set은 해당 데이터를 완전히 교체하는 것이고, update는 지정한 내용은 수정하고 나머지는 남기는 것이므로 update를 사용하시는 것이 맞습니다.
참고로 최근 문서는 FlutterFire 사이트에 따로 정리가 되고 있습니다. 참고하시기 바랍니다.
https://firebase.flutter.dev/docs/firestore/usage