inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Tạo ứng dụng nhắn tin với Flutter

Chức năng gửi tin

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

Đã giải quyết

359

min2019112544

13 câu hỏi đã được viết

0

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

flutter android firebase dart riverpod

Câu trả lời 2

0

min2019112544

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

0

DEV MOO

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

0

min2019112544

그럼 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 객체이므로 어느 쪽을 사용해셔도 문제 없습니다.

app logs 데이터로 쿼리 연습

0

17

2

[과제] 연습문제 쿼리 작성했습니다!

0

18

2

안드로이드 조직 계정 수익 인증 관련

0

32

2

6-1. 강의 최종 과제 제출합니다.

0

55

3

AdMob 계정 승인이 1개월 이상 지연되고 있습니다. 앱 검토와 순서가 어떻게 되는 건가요

0

88

2

vscode or 안드로이드 디바이스가 아닌 웹으로 실행했을때..

0

39

2

성능 분석 툴 공유

1

55

2

구글 플레이 API 업데이트 관련 문의

0

68

2

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

0

113

3

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

0

84

4

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

0

40

1

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

0

71

2

최종 과제 제출

0

72

3

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

0

65

2

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

0

87

2

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

0

44

1

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

0

76

2

전체 코드 받을 수 있나요?

0

127

1

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

0

136

1

14강 인증번호가 안와요ㅠ

1

337

3

아키팩처 패턴

0

153

0

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

0

1007

3

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

0

343

1

vscode로 코딩하기.

0

253

1