작성
·
363
·
수정됨
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이 출력되었기 때문입니다.
답변 1
1
안녕하세요!
하고싶은 형태가 아래가 맞을까요?
return query.watch().map(
(rows) => [ScheduleWithColor(
schedule: rows[0].readTable(schedules),
categoryColor: rows[0].readTable(categoryColors),
)],
);
rows 매핑에 리스트를 반환해야하는데 ScheduleWithColor를 반환하셨습니다.
이걸 떠나서 위 코드는 매우 좋지 못합니다. 우선 값이 최소 하나 존재한다고 보장을 할 수 없고 값이 아무리 많아져도 첫번재 값만 레퍼런스하기 때문입니다.
감사합니다!