๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Flutter + Dart/Flutter + Dart ๊ณต๋ถ€

Dart ๊ฐœ์š”

by GREEN๋‚˜๋ฌด 2025. 5. 3.
728x90

 

๐Ÿ“˜ Dart ๊ฐœ์š”

Dart๋Š” ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์–ธ์–ด๋กœ, ๋น ๋ฅธ ๊ฐœ๋ฐœ๊ณผ ๋†’์€ ์ƒ์‚ฐ์„ฑ์„ ์ถ”๊ตฌํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•˜์˜€์œผ๋ฉฐ, ๋ชจ๋ฐ”์ผ, ์›น, ๋ฐ์Šคํฌํ†ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์ง€์›ํ•˜๋Š” ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.


๐Ÿš€ Dart์˜ ํŠน์ง•

โœ… ๋น ๋ฅด๊ณ  ์œ ์—ฐํ•œ ๊ฐœ๋ฐœ ๊ฒฝํ—˜

  • Stateful hot reload๋ฅผ ์ง€์›ํ•˜์—ฌ UI ์ˆ˜์ • ํ›„ ์ฆ‰์‹œ ๋ฐ˜์˜ ๊ฐ€๋Šฅ
  • Flutter์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ์‹œ, ๊ณ ์„ฑ๋Šฅ์˜ ๋ฉ€ํ‹ฐ ํ”Œ๋žซํผ ์•ฑ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ

โœ… ํƒ€์ž… ์•ˆ์ •์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์˜ ์กฐํ™”

  • ์ •์  ํƒ€์ž… ์–ธ์–ด์ด์ง€๋งŒ, ํƒ€์ž… ์ถ”๋ก ์„ ์ง€์›ํ•˜์—ฌ ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐ
  • null ์•ˆ์ „์„ฑ(Sound null safety) ์ œ๊ณต: null ๊ฐ€๋Šฅ์„ฑ์„ ๋ช…ํ™•ํžˆ ์„ ์–ธํ•ด์•ผ ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ปดํŒŒ์ผ ์—๋Ÿฌ ๋ฐœ์ƒ
  • dynamic ํƒ€์ž…๋„ ์ง€์›ํ•˜์—ฌ ์œ ์—ฐํ•œ ํ”„๋กœํ† ํƒ€์ดํ•‘ ๊ฐ€๋Šฅ

โœ… ์ปดํŒŒ์ผ ๋ฐฉ์‹

๋Œ€์ƒ ํ”Œ๋žซํผ ์ง€์› ๋ฐฉ์‹  ์„ค๋ช…
๋ชจ๋ฐ”์ผ/๋ฐ์Šคํฌํ†ฑ JIT + AOT ๊ฐœ๋ฐœ ์ค‘ ๋น ๋ฅธ ์‹คํ–‰ (JIT), ๋ฐฐํฌ ์‹œ ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ ์ œ๊ณต (AOT)
์›น JS ๋ณ€ํ™˜ Dart๋ฅผ JavaScript๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰

๐Ÿง  Dart์™€ ์–ด๋…ธํ…Œ์ด์…˜ (Annotation)

Dart์—์„œ๋„ Java์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์–ด๋…ธํ…Œ์ด์…˜(annotation)์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์„์ด ์‚ฌ๋žŒ์„ ์œ„ํ•œ ์„ค๋ช…์ด๋ผ๋ฉด, ์–ด๋…ธํ…Œ์ด์…˜์€ ํ”„๋กœ๊ทธ๋žจ์ด ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”ํƒ€ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ Dart ์–ด๋…ธํ…Œ์ด์…˜ ํŠน์ง•

  • @override, @deprecated ๋“ฑ ๊ธฐ๋ณธ ์–ด๋…ธํ…Œ์ด์…˜ ์ œ๊ณต
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ฃผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๋‚˜ ๋Ÿฐํƒ€์ž„์—์„œ ํŠน์ • ๋™์ž‘์„ ์œ ๋„
  • ์ง์ ‘ ์‚ฌ์šฉ์ž ์ •์˜ ์–ด๋…ธํ…Œ์ด์…˜์„ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Œ

์˜ˆ์‹œ

class Person {
  final String name;

  const Person(this.name);
}

@Person('ํ™๊ธธ๋™')
class Hero {}

๐Ÿงฉ Dart ๋Ÿฐํƒ€์ž„ & ํ”Œ๋žซํผ ๊ตฌ์„ฑ

  • ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ์ž๋™ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜ ์ œ๊ณต
  • Isolate ๊ธฐ๋ฐ˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ: ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” ๊ฒฝ๋Ÿ‰ ๋‹จ์œ„์ธ isolate๋กœ ์ฝ”๋“œ ๋ถ„์‚ฐ ์‹คํ–‰
  • Dart VM: ๊ฐœ๋ฐœ ์‹œ ์‚ฌ์šฉํ•˜๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ
  • ๋Ÿฐํƒ€์ž„ ํƒ€์ž… ์ฒดํฌ: ๋™์  ์ƒํ™ฉ์—์„œ๋„ ํƒ€์ž… ์•ˆ์ •์„ฑ ๋ณด์žฅ

๐Ÿ“ฆ Dart๋Š” Flutter์˜ ๊ธฐ๋ฐ˜ ์–ธ์–ด

Flutter๋Š” Dart ํ”Œ๋žซํผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, UI ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ํˆด๋ง์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
Dart๋Š” Flutter ์•ฑ ์‹คํ–‰๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ•ต์‹ฌ ๊ฐœ๋ฐœ ๊ธฐ๋Šฅ๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

  • ์ฝ”๋“œ ํฌ๋งทํŒ…
  • ์ •์  ๋ถ„์„
  • ์œ ๋‹› ํ…Œ์ŠคํŠธ
  • ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ(pub.dev)

๐Ÿ”— ์ฐธ๊ณ  ๋งํฌ