signInWithEmailAndPassword • wrong-password: 주어진 이메일에 대해 비밀번호가 잘못되었거나, 해당 계정에 비밀번호가 설정되지 않았을 경우 발생합니다. • invalid-email: 이메일 주소가 유효하지 않은 경우 발생합니다. • user-disabled: 해당 이메일에 해당하는 사용자가 비활성화된 경우 발생합니다. • user-not-found: 해당 이메일에 해당하는 사용자가 존재하지 않는 경우 발생합니다. createUserWithEmailAndPassword • email-already-in-use: 해당 이메일 주소를 사용하는 계정이 이미 존재할 경우 발생합니다. • invalid-email: 이메일 주소가 유효하지 않은 경우 발생합니다. • operation-..
Flutter의 유효성 검사 프로세스 (Validation Process)Flutter에서 TextFormField의 유효성 검사는 Form 위젯과 validator를 사용하여 이루어지며 아래 순서로 동작한다 🔹 유효성 검사 동작 흐름1️⃣ TextFormField에 validator를 설정하면, 사용자가 입력한 값에 대한 검사를 수행.2️⃣ Form 위젯의 FormState에서 validate()를 호출하면 모든 TextFormField의 validator 함수가 실행됨.3️⃣ validator 함수가 null을 반환하면 유효한 값, 그렇지 않으면 오류 메시지를 반환하여 오류 표시.4️⃣ 만약 모든 필드가 유효하면 save()를 호출하여 onSaved에서 값을 저장할 수 있음. 🔹 코드 예제 (유..
🚨 기존 로직의 문제점기존의 FloatingActionButton을 클릭하여 현재 위치로 이동하는 로직에서 지도 이동이 제대로 작동하지 않는 이유는 다음과 같았다 ❌ 문제 1: GoogleMapController가 초기화되지 않은 상태에서 animateCamera 실행될 가능성final mapController = ref.read(googleMapControllerProvider);if (mapController != null) { mapController.animateCamera(CameraUpdate.newLatLng(newPosition));} else { print("❌ GoogleMapController가 아직 초기화되지 않았습니다!");}📌 문제점: • ref.read(googleMap..
이번 포스팅은 Flutter에서 MVVM (Model-View-ViewModel) 디자인 패턴을 간결하고 효율적으로 적용할 수 있는 기본 코드를 작성해본다.이 구조는 Riverpod을 사용하여 상태를 관리하고, View-ViewModel-Model 간의 역할을 명확히 분리하여 재사용성을 높이는 형태야.🔹 구조 설명lib/│── main.dart // 앱 진입점│── core/ // 공통 유틸리티 및 서비스│── views/ // UI (View)│── viewmodels/ // ViewModel (비즈니스 로직)│── repositories/ // repository│── datasou..
📌 카카오 API 연동 개선 기록 (Before & After) 1️⃣ .env 파일에서 API Key 로딩 문제🔴 Before (문제점)Future fetchPlacesByKeyword(String keyword, {String? categoryGroupCode, String? x, String? y, int? radius}) async { await dotenv.load(fileName: 'assets/config/.env'); // ❌ API 요청마다 .env 파일을 로드 (불필요한 파일 I/O 발생) String? apiKey = dotenv.env['KAKAO_API_KEY']; final response = await http.get( Uri.parse('https://dap..