끄적이는 개발노트
260729_강의 정리 (Dart와 Flutter) 본문
728x90
flutter · dart
Dart 언어와 Flutter, Fuchsia 정리
- Dart 언어의 핵심 특징과 문법 요소
- Dart와 Flutter의 관계
- 구글의 실험적 프로젝트, Fuchsia 개요
1. Dart는 어떤 언어인가
Flutter를 구동하는 구글의 크로스 플랫폼 언어
- 크로스 플랫폼 지원 — Web, Mobile, Desktop, Server 모두 대응
- 객체 지향 프로그래밍 기반 — Java·C#처럼 모든 것이 객체
- C처럼 main() 함수로 실행 시작
- 클래스 기반 + 함수 기반 프로그래밍 모두 가능 (함수도 일급객체)
💡 새 개념
일급객체 First-class function
- 함수를 변수에 담거나 다른 함수의 인자로 전달할 수 있는 성질
var add = (int a, int b) => a + b;
Dart는 정적 언어의 안정성과 동적 언어의 유연성을 함께 노리는 하이브리드 언어임
2. 타입 시스템 — var, final, dynamic
정적 타입과 동적 타입을 함께 지원하는 하이브리드 구조
- var — 타입을 추론한 뒤 이후 타입이 고정됨
- final — 런타임에 한 번만 값이 할당되는 불변 변수
- dynamic — 타입 검사를 생략하는 완전 동적 타입
💡 새 개념
Null Safety Null 안정성
- ? — nullable 타입임을 표시
- ! — 값이 null이 아님을 단언
- late — 나중에 초기화될 값임을 선언
String? name; // null 허용 → String name2 = name!;
3. 기능 재사용 — extension, mixin, interface
코드를 상속 없이도 확장하고 재사용하는 세 가지 방법
💡 새 개념
extension 기존 클래스 확장
- 이미 만들어진 클래스에 새 기능을 나중에 추가하는 문법
extension StringExt on String { bool get isEmail => contains('@'); }
mixin 다중 상속 대체
- 여러 클래스가 동일한 코드를 공유할 수 있게 해주는 문법
class Bird with Flying { }
interface 암묵적 인터페이스
- Dart는 별도 키워드 없이 모든 클래스가 인터페이스 역할을 겸함
class Duck implements Flyable { }
Dart에는 interface 키워드가 따로 없고, 모든 클래스가 암묵적으로 인터페이스가 됨 — implements로 구현함
4. 자료구조 & 비동기 처리
다양한 컬렉션 타입과 비동기 처리 문법을 지원함
- 자료구조 — List, Set, Map, Queue, LinkedList, HashSet, HashMap
- 비동기 처리 — Future, Stream, async / await
💡 새 개념
Future vs Stream 비동기 반환 방식
- Future — 한 번의 비동기 결과값을 반환
- Stream — 여러 번에 걸쳐 연속적으로 값을 반환
Future<String>은 결과 1개, Stream<int>는 연속된 값의 흐름
5. 컴파일 방식 — JIT + AOT
개발 중엔 빠르게, 배포할 땐 최적화되게
개발 단계
→
JIT 컴파일
→
핫 리로드로 즉시 확인
배포 단계
→
AOT 컴파일
→
네이티브 코드로 최적화
💡 새 개념
JIT Just-In-Time
- 실행 중에 컴파일하여 코드 변경 사항을 빠르게 반영 (핫 리로드)
AOT Ahead-Of-Time
- 실행 전에 미리 컴파일하여 실행 속도를 최적화
이 두 방식을 함께 지원하기 때문에 Flutter는 빠른 개발 속도와 빠른 실행 속도를 동시에 챙길 수 있음
6. Dart → Flutter, 그리고 Fuchsia
Dart 위에 세워진 두 개의 그림 — Flutter와 Fuchsia
Dart
→
Flutter (크로스 플랫폼 UI 프레임워크)
C
→
Window Programming (전통적 네이티브 개발 방식)
- Flutter 특징 — GUI 프로그래밍 / 컴파일 기반 / 객체 지향 / 이벤트 기반 / 컴포넌트 기반 / 크로스 플랫폼
- pub.dev — Dart의 패키지 생태계, npm과 유사한 역할
Fuchsia는 구글이 실험 중인 프로젝트로, 원래는 Dart 기반 차세대 범용 OS를 목표로 했으나 현재는 Nest Hub 등 일부 기기에 한정 적용된 상태임
728x90
'Flutter' 카테고리의 다른 글
| 260730_강의 정리 (Dart와 Flutter 2) (0) | 2026.07.30 |
|---|