
โ . ์๋ก : Dart๋ ๋ฌด์์ธ๊ฐ?
๐ 1. Dart์ ๊ฐ์ ๋ฐ ๊ฐ๋ฐ ๋ฐฐ๊ฒฝ
๐ 2. ์ Flutter์์ Dart๋ฅผ ์ฌ์ฉํ ๊น?
โ ก. ๋ณธ๋ก : Dart์ ์ฃผ์ ํน์ง๊ณผ ์ฅ์
๐ Step 1: ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ง์
๐ Step 2: Just-In-Time (JIT) & Ahead-Of-Time (AOT) ์ปดํ์ผ
๐ Step 3: Null Safety(๋ ์์ ์ฑ) ์ง์
๐ Step 4: ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ ๋ฌธ๋ฒ
๐ Step 5: ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ (async, await, Future, Stream)
โ ข. ๊ฒฐ๋ก : Dart์ ๊ฐ์ ๊ณผ ํ์ฉ ๋ฒ์
๐ Dart๋ฅผ ๋ฐฐ์ฐ๋ฉด ์ข์ ์ด์
๐ Flutter ๊ฐ๋ฐ์ ์ํ Dart ํ์ต ๋ฐฉ๋ฒ
๋ ๋ง์ ์ ๋ณด, ํน์
์์๋๋ก ํฌ์คํ
์ ๋ณด๊ณ ์ถ๋ค๋ฉด
์๋ ๋
ธ์
์ ํ์ธํด์ฃผ์ธ์.

https://mongmung-i.notion.site/19f9b1e2cdaa80a984ade6141a87fd29?pvs=4
์ฐฝ์ ํธ๋ ์ฌ์ ์บ ํ ๐ฒ | Notion
Copyright © Ryussi Studio All rights reserved
mongmung-i.notion.site
โ . ์๋ก : Dart๋ ๋ฌด์์ธ๊ฐ? ๐ค
Flutter ๊ฐ๋ฐ์ ์์ํ๋ ค๋ฉด
๋จผ์ Dart ์ธ์ด์ ๊ฐ๋ ๊ณผ ํน์ง์
์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
Dart๋ Google์์ ๊ฐ๋ฐํ ์ธ์ด๋ก,
Flutter์ ๊ธฐ๋ณธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์ด๋ฒ ํฌ์คํ
์์๋
Dart๊ฐ ์ด๋ค ์ธ์ด์ธ์ง,
ํน์ง๊ณผ ์ฅ์ ์ ์ค์ฌ์ผ๋ก
์ดํด๋ณด๊ฒ ์ต๋๋ค.
Dart์ ๊ฐ์ ๋ฐ ๊ฐ๋ฐ ๋ฐฐ๊ฒฝ
โ
Dart๋ Google์์ ๊ฐ๋ฐํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
โ
์น, ๋ชจ๋ฐ์ผ, ์๋ฒ, ๋ฐ์คํฌํฑ ๋ฑ ๋ค์ํ ํ๊ฒฝ์์ ์คํ ๊ฐ๋ฅ
โ
2011๋
๋ฐํ ์ดํ, 2017๋
๋ถํฐ Flutter์ ๊ธฐ๋ณธ ์ธ์ด๋ก ์ฑํ๋จ
โก ์ฆ, Dart๋ ๋จ์ํ ์น ์ธ์ด๊ฐ ์๋๋ผ, ๊ฐ๋ ฅํ ํฌ๋ก์คํ๋ซํผ ๊ฐ๋ฐ ์ธ์ด์ด๋ค ! ๐
์ Flutter์์ Dart๋ฅผ ์ฌ์ฉํ ๊น?
โ
Flutter์ ์๋ฒฝํ ํธํ์ฑ → Dart๋ Flutter ์ ์ฉ ์ธ์ด์ฒ๋ผ ์ต์ ํ๋จ
โ
๋น ๋ฅธ ์คํ ์๋ → AOT ์ปดํ์ผ์ ์ง์ํ์ฌ ๋ค์ดํฐ๋ธ๊ธ ์ฑ๋ฅ
โ
Hot Reload ์ง์ → Flutter ๊ฐ๋ฐ์์ ๋น ๋ฅธ ์ฝ๋ ๋ฐ์ ๊ฐ๋ฅ
โก Flutter๊ฐ ๊ฐ๋ ฅํ ์ด์ ์ค ํ๋๋ ๋ฐ๋ก Dart ๋๋ถ! ๐ฏ
โ ก. ๋ณธ๋ก : Dart์ ์ฃผ์ ํน์ง๊ณผ ์ฅ์ ๐ ๏ธ
Step 1: ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP) ์ง์
โ
Dart๋ **๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)**์ ๊ธฐ๋ฐ์ผ๋ก ํจ
โ
ํด๋์ค(Class), ์์(Inheritance), ์ถ์ ํด๋์ค(Abstract class) ๋ฑ์ ์ ๊ณต
โ
Mixins(๋ฏน์ค์ธ) ๊ธฐ๋ฅ์ผ๋ก ๋ค์ค ์์๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ ๊ตฌํ ๊ฐ๋ฅ
๐น Dart์ ๊ฐ๋จํ OOP ์์
class Car {
String brand;
int speed;
Car(this.brand, this.speed);
void drive() {
print('$brand๊ฐ ์์ $speed km๋ก ๋ฌ๋ฆฝ๋๋ค.');
}
}
void main() {
var myCar = Car('Tesla', 120);
myCar.drive();
}
๐น DartPad์์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
DartPad
dartpad.dev
โก Dart๋ ๊ฐ์ฒด์งํฅ ์ธ์ด๋ก, ํด๋์ค๋ฅผ ์ฝ๊ฒ ํ์ฉ ๊ฐ๋ฅ! ๐
Step 2: Just-In-Time (JIT) & Ahead-Of-Time (AOT) ์ปดํ์ผ
โ
JIT(Just-In-Time) ์ปดํ์ผ → ๊ฐ๋ฐ ์ค ๋น ๋ฅธ ์คํ (Hot Reload ์ง์)
โ
AOT(Ahead-Of-Time) ์ปดํ์ผ → ์ฑ ๋ฐฐํฌ ์ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ณํํ์ฌ ์ฑ๋ฅ ํฅ์
โก Flutter ๊ฐ๋ฐ ์ค์๋ JIT ์ปดํ์ผ์ ์ฌ์ฉํ๊ณ , ์ค์ ์ฑ ๋ฐฐํฌ ์ AOT๋ก ์ต์ ํ๋จ! ๐ฅ
Step 3: Null Safety(๋ ์์ ์ฑ) ์ง์
โ
Dart๋ Null Safety๋ฅผ ์ ๊ณตํ์ฌ Null ๊ด๋ จ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํจ
โ
null ๊ฐ์ ๊ฐ์ง ์ ์๋ ๋ณ์์ ๊ฐ์ง ์ ์๋ ๋ณ์๋ฅผ ๋ช
ํํ๊ฒ ๊ตฌ๋ถ
๐น Dart์ Null Safety ์์
String? nullableText; // null ๊ฐ์ ๊ฐ์ง ์ ์์
String nonNullableText = 'Hello'; // null ๊ฐ์ ๊ฐ์ง ์ ์์
void main() {
print(nullableText); // ์ถ๋ ฅ: null
print(nonNullableText); // ์ถ๋ ฅ: Hello
}
๐น DartPad์์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
๐จ Null Safety๋ฅผ ์ง์ํ๋ฉด ์ฑ ์คํ ์ค Null ์ค๋ฅ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ฆ! ๐ฏ
Step 4: ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ ๋ฌธ๋ฒ
โ
Dart์ ๋ฌธ๋ฒ์ Java, JavaScript, C#๊ณผ ์ ์ฌํ์ฌ ์ตํ๊ธฐ ์ฌ์
โ
๊ฐ๊ฒฐํ ํํ์(Arrow Function, Cascade Operator ๋ฑ) ์ ๊ณต
๐น Dart์ ๊ฐ๋จํ ๋ฌธ๋ฒ ์์
void main() {
var list = [1, 2, 3];
list.forEach((item) => print('๊ฐ: $item')); // Arrow Function ํ์ฉ
}
๐น DartPad์์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
โก Dart๋ ์ฝ๋๊ฐ ์ง๊ด์ ์ด๋ฉฐ ๊ฐ๋ ์ฑ์ด ๋์! ๐ฏ
Step 5: ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ์ง์ (async, await, Future, Stream)
โ
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ์ ์ง์ํ์ฌ ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ ๋ฑ์ ์ฝ๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ
โ
Future, async/await, Stream ๋ฑ ๋ค์ํ ๋น๋๊ธฐ ๋ฐฉ์ ์ ๊ณต
๐น Dart์ ๊ฐ๋จํ ๋ฌธ๋ฒ ์์
Future<void> fetchData() async {
await Future.delayed(Duration(seconds: 2));
print('๋ฐ์ดํฐ ๋ก๋ ์๋ฃ!');
}
void main() {
fetchData();
print('๋ฐ์ดํฐ ์์ฒญ ์ค...');
}
๐น DartPad์์ ์ ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ถ๋ ฅ๋ฉ๋๋ค.
โก ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ํตํด ๋คํธ์ํฌ ์์ฒญ์ ์ฝ๊ฒ ๊ตฌํ ๊ฐ๋ฅ! ๐
โ ข. ๊ฒฐ๋ก : Dart์ ๊ฐ์ ๊ณผ ํ์ฉ ๋ฒ์ โ
Dart๋ฅผ ๋ฐฐ์ฐ๋ฉด ์ข์ ์ด์
โ
Flutter์ ํ์ ์ธ์ด → ๋ชจ๋ฐ์ผ ์ฑ ๊ฐ๋ฐ์ ์ ํฉ
โ
๊ฐ์ฒด์งํฅ, ํจ์ํ, ๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ ์ ๊ณต
โ
JIT & AOT ์ปดํ์ผ๋ก ๋น ๋ฅธ ์คํ ๋ฐ ์ต์ ํ ๊ฐ๋ฅ
Flutter ๊ฐ๋ฐ์ ์ํ Dart ํ์ต ๋ฐฉ๋ฒ
โ
๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ตํ๊ธฐ (๋ณ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ์ปฌ๋ ์
๋ฑ)
โ
๊ฐ์ฒด์งํฅ ๊ฐ๋
(OOP)๊ณผ ํด๋์ค ํ์ฉ๋ฒ ์ตํ๊ธฐ
โ
๋น๋๊ธฐ ํ๋ก๊ทธ๋๋ฐ(Future, async/await) ์ฐ์ตํ๊ธฐ
๐ฏ Dart์ ๊ฐ๋ ๊ณผ ํน์ง ์ ๋ฆฌ! ๐
โ
Dart๋ Google์์ ๊ฐ๋ฐํ ํฌ๋ก์คํ๋ซํผ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
โ
Flutter ๊ฐ๋ฐ์ ์ํด ์ต์ ํ๋ ์ธ์ด๋ก ๋น ๋ฅธ ์ฑ๋ฅ ์ ๊ณต
โ
๊ฐ์ฒด์งํฅ(OOP), JIT & AOT ์ปดํ์ผ, Null Safety, ๋น๋๊ธฐ ์ฒ๋ฆฌ ์ง์