인프런 커뮤니티 질문&답변

goxo333님의 프로필 이미지
goxo333

작성한 질문수

플러터(Flutter) 앱 개발 입문부터 프로젝트 완성까지

파이어베이스 샘플 활용해보기

StreamBuilder 안에 에러입니다

작성

·

449

0

 

어떻게 해결하면 되나요?

답변 5

0

goxo333님의 프로필 이미지
goxo333
질문자

네 강사님 강의대로 넣었습니다

파이어 스토어 패키지가 업데이트되어 문법적으로 많은 부분이 변경되었습니다.

최신 버전을 통한 데이터 획득은 다음의 코드를 이용하여 사용하실 수 있습니다.

return Scaffold(
      appBar: AppBar(
        title: Text('firebase'),
      ),
      body: StreamBuilder<QuerySnapshot>(
        stream: FirebaseFirestore.instance.collection('test').snapshots(),
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
          if (!snapshot.hasData) return LinearProgressIndicator();
          return ListView(
              children: snapshot.data!.docs.map((DocumentSnapshot document) {
                Map<String, dynamic> data = document.data()! as Map<String, dynamic>;
                return Text(data['name']);
              }).toList(),
          );
        },
      ),
    );

 

해당 강의에서는 0.13.7 버전을 이용하기에 최신 버전으로 강의를 수강하실 경우 많은 어려움이 발생할 수 있습니다.

가능한 다음의 파일을 다운로드 하셔서 강의와 동일한 버전으로 패키지 설치를하여 수강하시는 걸 추천드립니다.

설치 파일 다운로드

 

감사합니다.

0

goxo333님의 프로필 이미지
goxo333
질문자

1번은 올리는데요 말씀하신 2번은 이해가 안됩니다 파이어베이스에 저장된 값이 뭔지를 모르겠어요...

goxo333님의 프로필 이미지
goxo333
질문자

혹시 이건가요

파이어베이스를 이용하기 위해서 firebase 데이터베이스에 test 컬렉션에 test1 문서와 name에 admin이라는 데이터를 넣었습니다.

코드에 작성한 이름과 저장된 데이터의 이름이 일치하는지 확인이 필요할 것 같습니다.

0

goxo333님의 프로필 이미지
goxo333
질문자

변경하고 실행했는데 흠.. 뭐가 문제일까요? 제가 중간에 빼먹은 코드가 있는걸까요??

혹 플러터와 클라우드 파이어 스토어 패키지의 버전이 몇 버전이실까요?

해당 강의는 1.17.5 버전 플러터와 0.13.7 버전 클라우드 파이어 스토어 패키지 기준으로 구성되어 있습니다.

패키지 버전 변경에 따라 코드를 변경해야 할 것 같습니다.

 

그리고 파이어베이스에 저장된 값을 보내주실 수 있으실까요

데이터가 다르게 기록되서 발생할 수 있는 문제로 보입니다.

 

다음의 정보들을 부탁드립니다.

1. 플러터와 패키지 버전

2. 파이어베이스에 저장된 값

0

goxo333님의 프로필 이미지
goxo333
질문자

그대로 복사해서 썼는데 이제는 이런 오류가 뜨는데요... 
이런 오류 하나 해결못하는 제가 너무 답답하네요ㅠㅠ

안녕하세요 강사 권승민입니다.

원래 새로운 프레임워크를 공부하실 때에는 시행착오가 있으실 수 밖에 없습니다!

안되시는 부분이 있으시더라도 걱정하지 마시구 최대한 수월하게 해결해드릴 수 있도록 노력하겠습니다

 

질문해주신 부분은 오류 발생 코드를 다음으로 변경 부탁드립니다.

return Text(snapshot.data)

 

감사합니다.

0

안녕하세요 강사 권승민입니다.

ㅤ 

보내주신 사항 확인했습니다.

현재 데이터가 Object가 아닌 Map을 반환해야 하는 것으로 보입니다.

오류가 발생하는 부분을 다음과 변경하여 출력되는 내용을 보내주시면 문제 해결에 도움이 될 것 같습니다.

아래의 코드를 통해 현재 snapshot에 어떤 데이터가 들어있는지 추가로 보내주시면 감사하겠습니다.


return Text(snapshot.data['name'])  →  return Text(snapshot.data)
goxo333님의 프로필 이미지
goxo333

작성한 질문수

질문하기