inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Flutter로 메신저앱 만들기

메시지 전송 기능

상태에서 가져오는 방식 vs. Provider에서 가져오는 방식

해결된 질문

355

강민성

작성한 질문수 13

0

38강 21:58 부분의 currentUserModel 부분에 authProvider에서 가져오는게 아닌 state에 저장된 유저모델
state.model.userList[0]를 넣는건 안되나요? 2개의 차이점을 알고 싶습니다

flutter android firebase dart riverpod

답변 2

0

강민성

enterChatFromFriendList 호출될때마다 state의 userList의 순서가 바뀌네요! 감사합니다!!

0

DEV MOO

currentUserModel 에는 현재 접속중인 유저(나 자신)의 정보를 갖고 있는 UserModel 을 전달해야 합니다.
state.model.userList 는 채팅방에 참여중인 유저들의 UserModel 객체가 저장되어 있는 리스트 이죠.
이 리스트의 0번 index 의 데이터가 항상 현재 접속중인 유저의 정보를 갖는 UserModel 객체라고 보장할 수는 없기 때문입니다. 채팅에 참여 중인 상대방의 UserModel 일 수도 있기 때문에 authProvider 에서 가져오는 것 입니다.

0

강민성

그럼 chatScreen의
final userModel = chatModel.userList[1]; 이 코드도 부분도 문제가 있는거 아닌가요?
그렇다고 authProvider로 모델을 가져오면 나의 모델을 가져오는거라.. 헤깔리네요

1

DEV MOO

잘못 답변 드렸습니다. 죄송합니다.
state.model.userList[0] 로 작성하셔도 문제 없습니다.

  1. 친구 목록 화면에서 채팅 상대를 터치했을 때,
    chat_repository.dart 의 enterChatFromFriendList 함수가 호출되면서
    0번 인덱스에 접속 중인 유저의 UserModel, 1번 인덱스에 채팅 상대의 UserModel 객체를 갖는 리스트가 생성되고(아래 코드)

final userModelList = [
  await firestore
      .collection('users')
      .doc(currentUserId)
      .get()
      .then((value) => UserModel.fromMap(value.data()!)),
  await firestore
      .collection('users')
      .doc(userId)
      .get()
      .then((value) => UserModel.fromMap(value.data()!)),
];

이 리스트를 속성으로 갖는 ChatModel 객체를 생성해서 반환합니다.

2. chat_provider.dart 의 enterChatFromFriendList 함수에서 이 ChatModel 객체를 상태관리 데이터로 등록합니다.

결국, ref.watch(authProvider).userModel 과 state.model.userList[0] 모두 동일한 UserModel 객체이므로 어느 쪽을 사용해셔도 문제 없습니다.

3-13 리텐션 과제 제출합니다

0

9

1

3-13. 리텐션 연습과제 제출합니다.

0

12

1

146 자료는 학습완료가 체크가 안돼요

0

15

1

'플러터 개발환경 세팅하기' 링크 클릭시, 악성 스크립트 설치 유도 페이지로 이동하니 조심하시길 바랍니다.

0

32

2

최종 과제 제출

0

46

2

Weekly Retention 과제 작성하였습니다.

0

51

2

광고 캠페인 종류와 키워드 플래너 관련 질문

0

61

2

[강의 문의] '앱 출시하기' 강의 추가 일정 관련하여 문의드립니다.

0

37

1

3-10 강의 14분경 코호트 해석 질문드립니다.

0

64

2

안드로이드 기기 실행 오류

0

45

2

Weekly 및 Monthly Retention 과제 제출합니다.

0

64

2

테이블 컬럼에 대한 질문

0

46

1

플러터 세팅 후 새폴더 생성건

0

42

1

강의에서 사용된 안드로이드 스튜디오 버전을 알고싶어요.

0

56

2

[과제] 퍼널 쿼리 PIVOT 테이블 작성

0

63

2

강의 자료는 어디있나요?

0

37

1

이미지 업로드해도 프로필에 x만 떠요

0

59

3

전체 코드 받을 수 있나요?

0

122

1

채팅목록 스크린에서 ref.listen ()말고 ref.watch().when()을 쓰는 이유는?

0

129

1

14강 인증번호가 안와요ㅠ

1

327

3

아키팩처 패턴

0

151

0

flutter_file_downloader 패키지 설치 후 앱 실행 시 오류 발생!

0

992

3

MessageCardWidget에 프로필 사진과 이름이 남는 이유

0

329

1

vscode로 코딩하기.

0

246

1