Flutter - Riverpod 상태관리
·
내일배움캠프 (Flutter 5기)/Flutter
1. Riverpod 이란?Riverpod은 Flutter에서 사용하는 상태관리 패턴중 하나이다. (이외에도 Provider, Bloc 등이 있음) 클릭한 버튼의 상태, 입력한 텍스트, 불러온 데이터 등을 쉽고 안전하게 관리할 수 있고변하는 데이터(상태)를 저장, 관리하면서 화면(UI)을 자동으로 업데이트해준다. 초보자도 실수 없이 쓰기 좋고, 안전하고, 테스트하기 쉽고, 가독성이 높은 코드를 작성할 수 있게 도와준다.특히 클린아키텍처와 의존성 주입을 잘 지원하여 복잡한 앱에서 유지보수하기 쉬워진다. 앱 실행중 메모리(RAM)에 데이터를 보관한다.그래서 앱이 꺼지거나 다시 실행되면 Riverpod에 있던 데이터들은 사라진다. 캐싱 서비스는 로컬 위치에 저장해서 앱을 껐다 켜도 데이터가 유지되고,네트워크 ..
Flutter - 상수 클래스
·
내일배움캠프 (Flutter 5기)/Flutter
서론Flutter 개발을 하다보면 생각보다 상수를 활용하게 되는 때가 많다.앱전반에서 변하지 않는 값들에 대해 재사용을 많이 하는데,여기에는 문자열, 경로, 숫자, 패딩, 색상, 여백, 그림자 설정 등 정말 다양한 요소들이 해당된다. 이런 설정들을 일일이 적어 사용하다보면, 보다 간소화시켜서 사용하고자 하는 욕구가 생긴다.이럴 때 주로 상수화를 시켜서 사용을 많이 하는데 간편하다는 장점 말고도 여러 좋은 점들이 많다.  상수 클래스 사용이유유지 보수 용이성 : 상수값을 한 곳에 모아두면, 상수값이 변경될때 해당 상수 파일만 수정하면 되니까 편리하다.오타, 실수 등 Human Error 방지 : 같은 설정을 상수화하지 않고 여기저기 사용하다보면 수정시에 굉장히 불편하다.특히나 빠트린 부분, 잘못 수정한 부..
Flutter - ListView
·
내일배움캠프 (Flutter 5기)/Flutter
서론어제 상태관리에 대해서밖에 제대로 공부를 안했는데 오늘 오전에 모의면접에 참여했다.그동안 쌓았던 얕은 지식들을 총동원하고 약간의 합법적인(?) 컨닝페이퍼와 함께 어찌저찌 답변을 하긴 했는데 아무래도 얕은 밑천은 금방 드러나버렸다. 그래도 오늘부터 차근차근 핵심 개념들에 대해 다시 돌아보고자 한다. Flutter 숙련ℚ. ListView, ListView.builder, SingleChildScrollView + Column 3가지의 차이점은?𝔸. 리스트뷰, 리스트뷰 빌더, 싱글차일드스크롤뷰에 칼럼을 넣은 세가지 구조의 차이점을 알아보려면 일단 각 위젯에 대한 이해가 필요하다.  ListView여러개의 위젯을 세로로 나열하여 보여주는 위젯이다. 쉽게 말하면 우리가 핸드폰에서 자주보는 스크롤 가능 목록..
Flutter - 상태(State)란?
·
내일배움캠프 (Flutter 5기)/Flutter
서론정신없이 최종프로젝트 준비를 하다 보니 어느새 모의 면접 준비단계에 들어섰다. 모의면접 시뮬레이션 학습 가이드에는 본인의 답지를 만들어볼 것을 권장한다고 쓰여있다.예상 문제를 준비해서 미리 공부한다는 느낌으로 대비하면 된다고 하셨다. 포커스를 둘 부분은, 말을 잘하는 법이다.내가 이해한 것을 바탕으로 개념에 대해 잘 설명할 수 있어야 한다.절대 준비한 자료를 읽으면서 답변하면 안 된다고 하셨다.실제로 정말 면접을 본다 생각하고 임해야겠다. 나의 경험이나 구체적인 예시를 들면 좋다고 하며, 순차적으로 말하는 연습을 해야 한다.잘 알지 못하거나 하지 못하는 부분에 대해서는 최대한 진실성 있게 말해야 한다. ChatGPT의 도움을 얻어 나만의 답안지를 작성해 봤다. Flutter 숙련ℚ. Flutter 앱..
디버그용 / 릴리즈용 DB 분기하기 + get 명령어 사용법
·
내일배움캠프 (Flutter 5기)/Flutter
Flutter 프로젝트를 준비하는 와중에, Firebase상에서 데이터를 주고받는 DB에 대해디버그 / 릴리즈 용도분리를 해야한다는 사실을 뒤늦게 깨달았다.이와 관련하여 팀원분이 사용법을 정리해주셨는데 아래와 같이 복기해보고자 한다.1. 디버그용 / 릴리즈용 DB 분기하기import 'package:flutter/foundation.dart';/// firestore DB 분기class FirestoreConstants { bool get isDebugMode => !kReleaseMode; String get usersCollection => isDebugMode ? 'users_test' : 'users'; String get packagesCollection => isDebugMode ? 'p..
DataSource / Repository / Implement 에 대한 차이점 정리
·
내일배움캠프 (Flutter 5기)/Flutter
클린아키텍처로 flutter 프로젝트를 진행하고 있는데 비슷한 용어가 여기저기서 다양하게 사용되다보니개념이 헷갈려서 아래 구성항목들에 대해서 오늘 다시한번 정리해보려고 한다. Data SourceData Source ImplementRepositoryRepository ImplementData Source역할 : 외부로부터 데이터를 가져오거나 저장하는 방법을 정의한다.→ 데이터의 출처(DB, API 등)에 접근하는 방법(상호작용)을 추상화 한다.여기서 추상화란 ?: 복잡한 시스템의 세부사항을 숨기고 핵심적인 부분만 드러내는 것비유 : 요리 레시피 + 주방→ 필요한 재료와 메서드 순서 등을 정의하지만 실제로 요리하지 않는다.→ 어떤 데이터를 어디서 가져올것인가(레스토랑 밖이 될 수도 있음)에 대한 메서드만..
Firebase API Key 보안설정 (.env)
·
내일배움캠프 (Flutter 5기)/Flutter
서론Flutter Project 진행을 하면서 Firebase 옵션설정을 할 기회가 많았다.Firebase와 프로젝트를 연동하면서 생성되는 FirebaseOptions 파일에는 다양한 보안설정들이 저장되어있는데,이중 어떤 값들을 암호화 해야하는지 몰라서 ChatGPT의 도움을 받아 아래와 같이 정리해봤다.API Keyapi 키는 프로젝트에 대한 인증 없이 공용 데이터를 읽거나, 일부 API호출을 허용한다.이때 누군가가 이 키를 사용하여 프로젝트의 설정을 오용하거나 데이터를 노출시킬 수 있다고 한다.따라서 이는 비공개로 관리 (.env) 하면서 환경변수로 외부에 노출되지 않도록 해야한다.또는 Firebase 보안규칙을 설정하여 인증되 않은 액세스를 제한 할 수도 있다. 그러나 프로젝트를 깃허브에도 저장하고..
데이터 모델이란?
·
내일배움캠프 (Flutter 5기)/Flutter
클린 아키텍처에서 Entity는 데이터 모델 클래스이며, 도메인 레이어에 속한다고 배웠다.여기서 드는 의문은, 데이터 모델이란 개념은 정확히 무얼 의미하는걸까? 제미나이에게 물어봤더니 아래와 같이 답변했다. 데이터 모델이란, 현실 세계의 복잡한 정보를 단순화, 추상화하여 표현하는 도구라고 한다.레고 블록으로 다양한 완성품을 만들때 필요한 것이 바로 설명서인데, 이 설명서가 모델이라고 한다. 데이터 모델에는 관계형 데이터 모델 / 계층형 데이터 모델 / 네트워크형 데이터 모델 등 다양한 종류가 있다.지금까지의 프로젝트에서는 관계형 데이터 모델을 주로 사용했던 것 같다.(엔티티마다 다양한 여러 속성을 가짐) 모델에는 아래와 같은 3요소가 있다. Entity(개체) : 현실세계의 사물, 사람, 개념 등을 나타..