inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

중첩 map 쓰는 부분

437

David Heo

작성한 질문수 12

0

안녕하세요 강사님.

return query.watch().map(
      (rows) => rows
          .map(
            (row) => ScheduleWithColor(
              schedule: row.readTable(schedules),
              categoryColor: row.readTable(categoryColors),
            ),
          )
          .toList(),
    );

이 부분에 질문이 있어서 글 남깁니다.

제 생각에는 데이터 구조가 위와 같다고 생각했습니다. 이에 그냥 아래와 같이 작성하면 어떨까라는 생각이 들었습니다.

return query.watch().map(
    (rows) => ScheduleWithColor(schedule: rows[0].readTable(schedules), categoryColor: rows[0].readTable(categoryColors)),
).toList();

근데 이와 같이 작성하면 return 타입이 Stream이 아니라 Future가 되는 것 같더군요. 제가 어느 부분에서 혼란을 겪고 있는지 알고 싶습니다.

 

+ 추가

제가 이렇게 생각한 이유는

return query.watch().map((rows) {
  print(rows.length);
  return rows
      .map(
        (row) => ScheduleWithColor(
          schedule: row.readTable(schedules),
          categoryColor: row.readTable(categoryColors),
        ),
      )
      .toList();
});

코드를 이렇게 변경해 봤을 때, rows.length가 1이 출력되었기 때문입니다.

flutter 클론코딩

답변 1

1

코드팩토리

안녕하세요!

하고싶은 형태가 아래가 맞을까요?

return query.watch().map(
      (rows) => [ScheduleWithColor(
              schedule: rows[0].readTable(schedules),
              categoryColor: rows[0].readTable(categoryColors),
            )],
    );

rows 매핑에 리스트를 반환해야하는데 ScheduleWithColor를 반환하셨습니다.

이걸 떠나서 위 코드는 매우 좋지 못합니다. 우선 값이 최소 하나 존재한다고 보장을 할 수 없고 값이 아무리 많아져도 첫번재 값만 레퍼런스하기 때문입니다.

감사합니다!

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

0

39

1

video_call 플러그인 설치후 에러 발생

0

47

1

SDK 안드로이드 설치 질문!

0

62

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

93

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

71

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

56

1

플레이스토어

0

60

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

56

1

가이드라인 질문

0

59

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

78

1

emulator 실행 오류

0

95

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

73

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

44

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

54

1

video_call 플러그인 설치시 에러문제

0

67

1

children 안의 if 문에서 { } 못쓰는 이유?

0

51

1

이렇게 오류가 떠요

0

66

1

AppBar 사용했는데

0

63

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

58

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

65

1

Video Player 프로젝트에 대한 추가 질문

0

54

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

43

1

geolocator 오류때문에 개발진행이 불가능입니다

0

64

1

API 관련 이슈

0

89

2