1. Android 구글 로그인 실패 (ApiException: 10)
2. 댓글 기능 오류 - 삭제 불가
- 댓글을 작성한 직후 삭제 버튼을 눌러도 삭제가 되지 않음
- 앱을 재시작하거나 상태를 다시 불러온 후에는 삭제가 정상적으로 작동함
1. 원인
- 댓글 추가 시, Firestore에 저장은 되지만
id 필드는 빈 문자열 ''로 설정됨
- 이후 댓글 목록(
state) 업데이트 시, Firestore에서 반환된 문서 ID를 다시 받아오지 않고 기존 id: '' 상태 그대로 유지됨
- 이로 인해 삭제 시
comment.id 값으로 Firestore에서 문서를 찾을 수 없으므로 delete() 호출이 실패
2. 실패한 시도
state = [...state, comment]; 와 같이 id가 없는 댓글을 직접 상태로 추가함
- Firestore에는 저장됐지만 ID를 몰라서 삭제는
불가능
3. 해결 방법
- 댓글을 Firestore에 저장
- 다시
fetchComments(postId) 를 호출하여 전체 댓글을 새로 불러옴
state = comments 를 통해 최신 댓글 목록을 다시 반영
Future<void> addComment(Comment comment) async {
final dto = CommentDto.fromEntity(comment);
await firestore
.collection('posts')
.doc(postId)
.collection('comments')
.add(dto.toJson());
final comments = await repository.fetchComments(postId);
state = comments;
}
3. .env 파일 못 읽음
1. 에러 메시지:
Unhandled Exception: Instance of 'FileNotFoundError'
2. 원인:
pubspec.yaml에 .env 명시하지 않음.
3. 해결:
.env 파일을 루트에 생성
pubspec.yaml에 .env 명시
4. flutter_dotenv 설치했는데도 import 오류
1. 에러 메시지:
Target of URI doesn't exist: 'package:flutter_dotenv/flutter_dotenv.dart'
2. 해결 방법:
flutter pub get 실행
- VSCode에서
Dart: Restart Analysis Server 실행하거나flutter clean
5. 댓글 컬렉션 문제
문제점
- 실시간 댓글 기능 구현 시, 모든 댓글을 하나의 컬렉션에서 관리하면 특정 게시물의 댓글만 불러오기 비효율적이었습니다.
해결 과정
- 게시물(Post) Document 내에 댓글(Comment) 서브 컬렉션을 생성하는 구조로 변경했습니다. 이를 통해 각 게시물에 종속된 댓글만 효율적으로 가져오고, Firestore의 데이터 계층 구조를 활용하여 확장성을 확보했습니다.
결과:
- 댓글 조회 시 쿼리 복잡도를 낮추고 응답 속도를 개선하여 사용자 경험을 향상시켰습니다.