데이터를 하나가 아니라 여러 개 다루기 시작하면 무조건 필요한 문법들이다.
순서 있음
중복 가능
인덱스로 접근
우리가 알고 있는 배열 느낌
→ 대부분의 데이터는 일단 리스트에 담는다.
중복 없음
순서 없음
→ "중복 제거하고 싶다" 하면 무조건 Set.
Key → Value 구조
키 중복 불가
Future는 설명 그대로 “미래에 도착할 값”이고, async/await은 그걸 기다리는 문법.
다운로드
네트워크 요청
파일 저장
이런 건 다 시간이 걸리는 작업이라 비동기가 필수라고 한다.
비유:
동기 → 카페에서 커피 나올 때까지 멍하니 서 있는 상태
비동기 → 벨 받고 다른 일 하다가 커피 나오면 받으러 가는 상태
Flutter는 프레임 당 60~120번 화면을 그리기 때문에
조금이라도 멈추면 앱이 ‘멈춘 것처럼 보이는’ 문제가 생긴다.
Dart는 null safety가 강한 언어라서,
nullable로 선언하지 않으면 null 자체를 넣을 수 없게 막는다.
String name; → null 불가
String? name; → null 허용
그리고 null을 사용할 때 주의하라고 계속 알려준다.
?.
??
! (절대 null일 리 없다는 대전제)
네트워크 끊김
파일 없음
parse 실패
null 강제 호출 오류
이런 건 다 예외로 터지기 때문에
try-catch를 습관처럼 넣어야 한다.
flutter 앱 만들때 여기저기 넣어야겠다.
요일, 색깔, 상태, 타입 등처럼
딱 정해진 값들만 원하는 경우 사용.
enum Weekday { monday, tuesday, wednesday ... }
문자열로 비교하는 코드보다 훨씬 안전하고 가독성도 좋다.
파일명 → snake_case
변수 / 함수명 → camelCase
클래스, enum → PascalCase
Flutter 코드 읽을 때 왜 다 이 스타일인지 오늘 깨달았다.
Google이 만든 멀티플랫폼 언어
Flutter의 기반
JIT + AOT 둘 다 지원
타입 안정성(Type Safe)
null 안전성(null safe)
문법이 직관적이고 배우기 쉬움
하나의 코드로 여러 플랫폼을 돌릴 수 있음(Android, IOS, Web, Desktop).