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

330

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

198강 (){onTap(e);}의 이해 돕기

0

29

1

Node 관련 질문입니다

0

30

3

구글 소셜 로그인 후 로그인 시 구글에러

0

26

2

실습중(개인 비용 관리 앱) 문의드려요

0

43

2

6강에 비디오가 이상해요

0

27

2

Isar 마지막 업데이트는 2년전입니다.

0

31

0

진입 여부 판단 기준 질문

0

77

3

피그마 first draft 기능 질문

0

49

3

더백님 감사합니다

1

37

1

upup 질문

0

58

2

data.ai 필터링 검색이 안됩니다!

0

47

1

앱 리텐션에 대한 질문

0

50

2

Chat GPT API 설정하기 프롬프트

0

46

2

저예산+최대지출 캠페인 유지시간

0

65

2

FlutterSecureStorage 질문

0

32

0

구글 플레이 등록 시, Privact Policy URL 등록 팁

0

42

1

질문있습니다!

0

19

0

전체 코드 받을 수 있나요?

0

98

1

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

0

99

1

14강 인증번호가 안와요ㅠ

1

262

3

아키팩처 패턴

0

141

0

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

0

951

3

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

0

301

1

vscode로 코딩하기.

0

225

1