파파비의 블로그
플러터, flutter) UserId 저장하고, 메시지가 내껀지 아닌지 확인하기 - 본문
채팅창 같은 것을 만들 때, 본인 채팅과 남의 채팅의 보여지는 것이 다르다.
그것을 확인하는 방법을 보고자 한다.
1. 저장하기
일단 Data에 누가 해당 메시지를 적었는지 유저 id를 함께 저장하면된다.
어렵지 않다.
유저id 정보는 auth를 통해서 알 수 있다.
FirebaseAuth.instance.currentUser() 를 통해 객체를 받고
거기서 uid에 접근하면 된다.
다만 여기서 하나의 문제는 FirebaseAuth.instance.currentUser()는 future형태이다. 그래서 await으로 한번 기다린 객체를 받은 후에 uid에 접근할 수 있다는 것이다.
버튼을 눌렀을 때, 콜백 메소드에서 진행하는 것은 큰 무리가 없다.
2.데이터 불러와서 확인하고 채팅버블 만들기
1) 퓨처빌더사용하면 된다.
퓨처 속성으로 먼저 FirebaseAuth.instance.currentUser()가져오고
그 뒤에 해당 객체값의 uid를 builder에서 사용하면 된다.
<참고>
순서 주의
여기서는 future 후에 streambuilder를 사용했다.
만약 streambuilder 안에 futurebuilder가 있었으면 한번만 필요한 과정이 여러번 진행될 수도 있다.
따라서 future안에 streambuilder를 넣는게 훨씬 효율적이다.
마지막으로 메시지들이 listview에서 다 똑같은 형태니까
key를 추가해주면, 혹시나 모를 버그를 예방할 수 있다.
그래서 MessageBubble에 key 속성을 넣어주고,
이런식으로 고유한 값을 부여해주면 좋을 듯 싶다.
'개발 > flutter' 카테고리의 다른 글
플러터, flutter) Fire Storage 사용하기 (0) | 2020.06.23 |
---|---|
플러터, flutter) FireStore, 다른 collection에 저장된 data 가져오기 (0) | 2020.06.22 |
플러터, flutter) Firestore 메시지들 순서대로 보여지게하기 (0) | 2020.06.22 |
플러터, flutter) Firebase Cloud Firestore - 규칙관련 (0) | 2020.06.22 |
플러터, flutter) Firebase Auth - 로그인 및 그에 따른 화면 관리 (1) | 2020.06.22 |