2025/11 11

2025.11.14

Freezed & JSON Serialization 트러블슈팅문제Freezed 적용 도중 part 'xxx.freezed.dart', part 'xxx.g.dart' 에러 발생fromJson(Map) 타입 불일치로 오류 (Map vs Map)원인Freezed는 Map 형식이 일반적타입 강제 지정 때문에 json_serializable이 매칭을 못 함part 파일 누락 시 build_runner가 생성 파일을 못 찾음해결 방법factory ToDoModel.fromJson(Map json) 형태로 변경model 파일 상단에 정확히 아래 2개 추가: part 'to_do_model.freezed.dart'; part 'to_do_model.g.dart'; flutter pub run build_runner ..

카테고리 없음 2025.11.14

Flutter 로그인 UI 만들면서 배운 것들

1. Padding이 먹지 않았던 이유오늘 로그인 UI를 만들다가 Padding이 먹지 않는 문제가 발생했다.원인은 아주 단순했다.Padding() 안에 child가 없으면 여백이 생길 수가 없다.Padding은 “안에 있는 위젯에게 여백을 주는 상자”인데, 안에 아무 것도 없으니 여백을 줄 대상이 없었던 것.해결Column 전체를 Padding으로 감싸는 방식이 가장 깔끔하다.레이아웃 구조는 보통 SafeArea → Padding → Column 순으로 많이 쓴다.2. ElevatedButton에서 배경색 지정 오류style: ButtonStyle(backgroundColor: Color(...))을 썼는데 오류가 났다.이유는 backgroundColor가 Color 하나를 직접 받는 타입이 아니라 M..

카테고리 없음 2025.11.13

Flutter 마켓 앱 Chapter 5 — 실무형 REST + GPS + Docker + HomeTab 완성

학습 목표 요약구분핵심 내용기술 포인트VWORLD 연동위치 좌표 기반 주소 매칭REST API 요청, 위도/경도 변환, async 처리GPS 연동기기 위치 실시간 추적geolocator, permission_handlerREST API 구조 이해HTTP 요청의 흐름 파악GET/POST/PUT/DELETE, header & bodyDocker 환경 구축로컬 백엔드 환경 세팅MySQL + Spring Boot 컨테이너 연결인증/회원가입 기능HTTP 요청 + JWT Token 구조 이해Dio 통신, 로그인 후 Token 저장내 정보 가져오기Token 기반 인증 요청Authorization Header 설정내 동네 불러오기REST API 응답 파싱 → 모델화fromJson / toJson 구조상품 목록 불러오기..

카테고리 없음 2025.11.12

Firestore CRUD 완성 및 Riverpod–Freezed–Hook 기반 구조 리팩토링

[트러블 슈팅 ①] — Firestore CRUD 구현 중 데이터 조회(docs) 자동완성 오류[상황 인지]Firestore에서 Todo 목록을 조회하는 getToDos() 작성 중querySnapshot.docs 부분에서 자동완성이 인식되지 않고타입 불일치 오류가 발생했다. final querySnapshot = db.collection('Todos').get(); // ← await 누락 final todos = querySnapshot.docs.map(...); // docs 인식 안 됨 [고민]docs 속성이 인식되지 않는 이유는?Firestore 문서(QuerySnapshot)의 반환 타입 문제인가?혹시 비동기 처리가 누락되어서 Future을 그대로 받고 있는 건 아닐까?[적용]await 키워드..

카테고리 없음 2025.11.12

2025.11.11 (Flutter + Riverpod + Freezed + Hook 기반 구조 정리)

오늘의 핵심 학습 키워드개념설명적용 포인트예시Freezed불변(Immutable) 데이터 모델을 쉽게 정의하는 코드 생성기ToDoModel 클래스 생성 시 copyWith, fromJson, toJson 자동화ToDoModel 모델 생성Riverpod (AsyncNotifier)상태 비동기 관리 (Firebase 연동, CRUD 등)HomeViewModel에서 Firebase 데이터 비동기 로드 및 업데이트ref.watch(homeViewProvider)copyWith()데이터 일부만 변경할 때 사용즐겨찾기/완료 토글 시 기존 상태 복제toDo.copyWith(isFavorite: !toDo.isFavorite)HookConsumerWidget / useState / useTextEditingContro..

카테고리 없음 2025.11.11

Cloud Firestore CRUD & Riverpod 상태관리 연동

Firestore CRUD 핵심 메서드 정리구분기능Firestore 메서드예시 코드설명Create데이터 추가.add() / .set()db.collection('Todos').add(data)문서를 생성하고 ID를 자동 발급받음Read데이터 조회.get() / .snapshots()db.collection('Todos').get()모든 문서를 읽어옴Update데이터 수정.update() / .set(merge: true)db.collection('Todos').doc(id).update(data)특정 필드 수정Delete데이터 삭제.delete()db.collection('Todos').doc(id).delete()문서 전체 삭제정리 문장:Firestore는 .add(), .get(), .update()..

카테고리 없음 2025.11.10

2025.11.07

1. SizedBox width가 적용되지 않는 이유문제 상황:ListView 안에 SizedBox(width: 120)을 넣었는데 폭이 적용되지 않음.원인:ListView는 가로 방향으로 무한대(width=∞) 공간을 허용하기 때문에,자식 위젯의 width 제약이 무시됨.해결 방법:Center나 Align으로 감싸면 부모 제약이 적용됨또는 Row(mainAxisSize: MainAxisSize.min) 사용스크롤 필요 없으면 Column 사용정리 Center( child: SizedBox(width: 120, height: 250, child: ...), ) 2. PageView.builder 활용 및 왼쪽 정렬문제 상황:PageView.builder로 카드 UI를 만들었더니 중앙에서 시작함.원인:Pa..

카테고리 없음 2025.11.07

Flutter MVVM & Riverpod 심화 이해 (2025.11.06)

MVVM 구조 복습Model: 데이터를 정의하는 구조체.→ JSON, API, DB 등 외부 데이터의 형태를 정의하고, 변환 로직(fromJson, toJson)을 포함.Repository: 데이터를 “어디서 가져올지” 관리하는 역할.→ 예: Firestore, REST API, Local DB 등과 통신하고, 받은 데이터를 Model로 변환.ViewModel: Repository로부터 데이터를 받아 state를 변경하고, View(UI)에 반영되도록 함.View(UI): ref.watch()를 통해 상태 변화를 감지하고 자동으로 다시 빌드.요약Model은 “데이터 구조”, Repository는 “데이터 출처”, ViewModel은 “상태 관리”, View는 “표현 담당”.state.count.count..

카테고리 없음 2025.11.06

Flutter iOS 빌드 및 Firebase 연결 오류 해결 (2025.11.05)

iOS 첫 빌드가 느린 이유iOS 프로젝트를 처음 빌드할 때는 다음 모든 과정이 처음부터 실행되기 때문에 시간이 오래 걸린다.pod install : CocoaPods 의존성 설치Xcode build : iOS용 네이티브 코드 빌드linking : Flutter 코드와 네이티브 프레임워크 연결simulator boot : iOS 시뮬레이터 실행⏱ 첫 빌드는 보통 5~15분 소요, 이후엔 캐시 덕분에 1~2분으로 단축된다.2. CocoaPods 오류 해결 (pod install 실패 시)터미널에서 다음 명령 실행: pod repo update pod install platform :ios, '15.0' 설정이 주석 처리되어 있으면 반드시 해제해야 함.(ios/Podfile 내 상단에 위치)이 과정을 거치면..

카테고리 없음 2025.11.05

2025.11.04

오늘은 Flutter의 MVVM 구조와 Riverpod 패턴을 중심으로 학습했다.Model, Repository, ViewModel, View 간의 데이터 흐름을 이해하고,Form과 TextFormField의 작동 원리, 그리고 Key의 역할을 구체적으로 익혔다.MVVM + Riverpod 구조Model: 데이터의 형태와 JSON 변환 방식을 정의한다. (fromJson, toJson)Repository: 외부에서 데이터를 불러와 Model 객체로 변환한다.ViewModel: Repository에서 데이터를 가져와 상태(state)에 저장하고 View에 전달한다.View: 사용자가 보는 화면이며, ViewModel의 상태 변화에 따라 갱신된다.Form / TextFormField / GlobalKeyFo..

카테고리 없음 2025.11.04