Dart 2.14 ์–ธ์–ด ๋ฐ Flutter 2.5 ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

Google์€ Dart 2.14 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์ถœ์‹œ๋ฅผ ๋ฐœํ‘œํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์–ธ์–ด๋Š” ๊ฐ•๋ ฅํ•œ ์ •์  ํƒ€์ดํ•‘์„ ์‚ฌ์šฉํ•˜์—ฌ Dart ์–ธ์–ด์˜ ์›๋ž˜ ๋ฒ„์ „๊ณผ ๋‹ค๋ฅธ ๊ทผ๋ณธ์ ์œผ๋กœ ์žฌ์„ค๊ณ„๋œ Dart 2 ๋ถ„๊ธฐ์˜ ๊ฐœ๋ฐœ์„ ๊ณ„์†ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค(์œ ํ˜•์€ ์ž๋™์œผ๋กœ ์ถ”๋ก ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ ํ˜•์„ ์ง€์ •ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ๋™์  ์œ ํ˜• ์ง€์ •์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ฒ˜์Œ์— ์œ ํ˜•์ด ๋ณ€์ˆ˜์— ํ• ๋‹น๋˜๊ณ  ์ดํ›„์— ์—„๊ฒฉํ•œ ์œ ํ˜• ๊ฒ€์‚ฌ๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

Dart ์–ธ์–ด์˜ ํŠน์ง•:

  • JavaScript, C ๋ฐ Java ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์ž์—ฐ์Šค๋Ÿฌ์šด ์นœ์ˆ™ํ•˜๊ณ  ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ํœด๋Œ€์šฉ ์žฅ์น˜๋ถ€ํ„ฐ ๊ฐ•๋ ฅํ•œ ์„œ๋ฒ„๊นŒ์ง€ ๋ชจ๋“  ์ตœ์‹  ์›น ๋ธŒ๋ผ์šฐ์ €์™€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ๋น ๋ฅธ ์‹คํ–‰๊ณผ ๊ณ ์„ฑ๋Šฅ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ์กด ๋ฉ”์†Œ๋“œ ๋ฐ ๋ฐ์ดํ„ฐ์˜ ์บก์Šํ™” ๋ฐ ์žฌ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜๋Š” ํด๋ž˜์Šค ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ.
  • ์œ ํ˜•์„ ์ง€์ •ํ•˜๋ฉด ์˜ค๋ฅ˜ ๋””๋ฒ„๊น… ๋ฐ ์‹๋ณ„์ด ๋” ์‰ฌ์›Œ์ง€๊ณ , ์ฝ”๋“œ๊ฐ€ ๋” ๋ช…ํ™•ํ•ด์ง€๊ณ  ์ฝ๊ธฐ ์‰ฌ์›Œ์ง€๋ฉฐ, ํƒ€์‚ฌ ๊ฐœ๋ฐœ์ž์˜ ์ˆ˜์ • ๋ฐ ๋ถ„์„์ด ๋‹จ์ˆœํ™”๋ฉ๋‹ˆ๋‹ค.
  • ์ง€์›๋˜๋Š” ์œ ํ˜•์—๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ํ•ด์‹œ, ๋ฐฐ์—ด ๋ฐ ๋ชฉ๋ก, ๋Œ€๊ธฐ์—ด, ์ˆซ์ž ๋ฐ ๋ฌธ์ž์—ด ์œ ํ˜•, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๊ฒฐ์ • ์œ ํ˜•, ์ •๊ทœ์‹(RegExp)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ž์‹ ๋งŒ์˜ ์œ ํ˜•์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ‘๋ ฌ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด isolate ์†์„ฑ์ด ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค์˜ ์ฝ”๋“œ๋Š” ๋ณ„๋„์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์žˆ๋Š” ๊ฒฉ๋ฆฌ๋œ ๊ณต๊ฐ„์—์„œ ์™„์ „ํžˆ ์‹คํ–‰๋˜๋ฉฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด ๊ธฐ๋ณธ ํ”„๋กœ์„ธ์Šค์™€ ์ƒํ˜ธ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋Œ€๊ทœ๋ชจ ์›น ํ”„๋กœ์ ํŠธ์˜ ์ง€์› ๋ฐ ๋””๋ฒ„๊น…์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ œXNUMX์ž ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜•ํƒœ๋กœ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ ๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์„ ๋ณ„๋„์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ ํŒ€์— ๋งก๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ์ฝ”๋“œ ์ˆ˜์ •("ํŽธ์ง‘ ๋ฐ ๊ณ„์†")์ด ๊ฐ€๋Šฅํ•œ ๋™์  ๊ฐœ๋ฐœ ๋ฐ ๋””๋ฒ„๊น… ๋„๊ตฌ์˜ ๊ตฌํ˜„์„ ํฌํ•จํ•˜์—ฌ Dart ์–ธ์–ด ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ๋„๊ตฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค.
  • Dart ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ์„ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ ์œ„ํ•ด SDK, ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž pub, ์ •์  ์ฝ”๋“œ ๋ถ„์„๊ธฐ dart_analyzer, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŠธ, ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ DartPad ๋ฐ IntelliJ IDEA, WebStorm, Emacs, Sublime Text์šฉ Dart ์ง€์› ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. 2์™€ ๋น”.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋œ ์ถ”๊ฐ€ ํŒจํ‚ค์ง€๋Š” 20๊ฐœ ์ด์ƒ์˜ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ๋Š” pub ์ €์žฅ์†Œ๋ฅผ ํ†ตํ•ด ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค.

Dart 2.14 ๋ฆด๋ฆฌ์Šค์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ">>" ์—ฐ์‚ฐ์ž์™€ ๋‹ฌ๋ฆฌ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ถ€ํ˜ธ ๋น„ํŠธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•˜๋Š” ๋…ผ๋ฆฌ ์‹œํ”„ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์ƒˆ๋กœ์šด ์‚ผ์ค‘ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์ž(>>>)๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์–‘์ˆ˜ ๋ฐ ์Œ์ˆ˜).
  • ์ผ๋ฐ˜ ํ•จ์ˆ˜ ์œ ํ˜•์„ ์œ ํ˜• ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์œ ํ˜• ์ธ์ˆ˜์— ๋Œ€ํ•œ ์ œํ•œ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ œ ๋‹ค์Œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. late List (T)>idFunctions; var ์ฝœ๋ฐฑ = [ (T ๊ฐ’) => ๊ฐ’]; ํ›„๊ธฐ S ํ•จ์ˆ˜ (T)>(S) f;
  • @Deprecated์™€ ๊ฐ™์€ ์ฃผ์„์˜ ์œ ํ˜•์œผ๋กœ ์ธ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ œ ๋‹ค์Œ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @TypeHelper (42, "์˜๋ฏธ")
  • ์ •์  ๋ฉ”์†Œ๋“œ hash, hashAll ๋ฐ hashAllUnordered๊ฐ€ Object ํด๋ž˜์Šค์˜ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(์ฝ”์–ด)์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. DateTime ํด๋ž˜์Šค๋Š” 30์‹œ๊ฐ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†๋Š” ์—ฌ๋ฆ„ ์‹œ๊ฐ„๊ณผ ๊ฒจ์šธ ์‹œ๊ฐ„ ์‚ฌ์ด์˜ ์‹œ๊ณ„๋ฅผ ๋ณ€ํ™˜ํ•  ๋•Œ ํ˜„์ง€ ์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: ํ˜ธ์ฃผ์—์„œ๋Š” XNUMX๋ถ„์˜ ์˜คํ”„์…‹์ด ์‚ฌ์šฉ๋จ). ffi ํŒจํ‚ค์ง€์—๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ž๋™์œผ๋กœ ํ•ด์ œํ•˜๋Š” ๊ฒฝ๊ธฐ์žฅ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ffigen ํŒจํ‚ค์ง€์—๋Š” C ์–ธ์–ด์—์„œ Dart ์œ ํ˜•์˜ typedef ์ •์˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • pub.dev ์ €์žฅ์†Œ์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ํŒจํ‚ค์ง€ 250๊ฐœ์™€ ์ƒ์œ„ 94๊ฐœ ์ค‘ 1000%๊ฐ€ "null ์•ˆ์ „" ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“œ๋Š” ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š๊ณ  "Null"๋กœ ์„ค์ •๋œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์—ฌ ๋ฐœ์ƒํ•˜๋Š” ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. โ€ " ๋ชจ๋“œ๋Š” ๋ณ€์ˆ˜์— ๋ช…์‹œ์ ์œผ๋กœ null ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š๋Š” ํ•œ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“œ๋Š” ๋ณ€์ˆ˜ ์œ ํ˜•์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ค€์ˆ˜ํ•˜๋ฏ€๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ถ”๊ฐ€ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ํ˜• ์ค€์ˆ˜๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— ํ™•์ธ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "int"์™€ ๊ฐ™์ด ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ์•”์‹œํ•˜์ง€ ์•Š๋Š” ์œ ํ˜•์˜ ๋ณ€์ˆ˜์— "Null" ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๋ถ„์„๊ธฐ(linter)์— ๋Œ€ํ•œ ํ†ตํ•ฉ ๊ทœ์น™ ์„ธํŠธ๊ฐ€ ์ œ์•ˆ๋˜์–ด Dart ๋ฐ Flutter ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ฝ”๋“œ ์Šคํƒ€์ผ ์ง€์นจ ์ค€์ˆ˜ ์—ฌ๋ถ€๋ฅผ ๋™์‹œ์— ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์—ญ์‚ฌ์  ์ด์œ ๋กœ Flutter์™€ Dart์˜ ์ฝ”๋”ฉ ๊ทœ์น™์€ ๋‹ฌ๋ž์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Dart์˜ ๊ฒฝ์šฐ Google์˜ ํ˜„ํ•™์  ๊ทœ์น™๊ณผ Dart ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๊ทœ์น™์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๊ทœ์น™ ์„ธํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Dart 2.14์—๋Š” ์ƒˆ๋กœ์šด Dart ํ”„๋กœ์ ํŠธ์™€ Flutter SDK์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋„๋ก ๊ฒฐ์ •๋œ linter์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ณตํ†ต ๊ทœ์น™ ์„ธํŠธ๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์„ธํŠธ์—๋Š” ํ•ต์‹ฌ ๊ทœ์น™(lints/core.yaml ํŒจํ‚ค์ง€), ๊ถŒ์žฅ๋˜๋Š” ์ถ”๊ฐ€ ๊ทœ์น™(lints/recommended.yaml) ๋ฐ Flutter ๊ด€๋ จ ๊ถŒ์žฅ ์‚ฌํ•ญ(flutter_lints/flutter.yaml)์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ˜„ํ•™์ ์ธ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž๋Š” Dart ๋ฌธ์„œ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ „ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  • ํฌ๋งทํ„ฐ์—์„œ๋Š” ๊ณ„๋‹จ์‹ ์ฝ”๋“œ ๋ธ”๋ก์˜ ํฌ๋งท์ด ์ตœ์ ํ™”๋˜์–ด ํฌ๋งท ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๊ณ  ํ‘œํ˜„์‹ ์š”์†Œ์˜ ์†Œ์œ ๊ถŒ์— ๋Œ€ํ•œ ๋ชจํ˜ธํ•œ ํ•ด์„์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, "var result = errorState ?" ํ‘œํ˜„์‹์—์„œ "..doIt"์„ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. foo : bad..doIt()โ€๋Š” โ€œbadโ€ ๋ธ”๋ก์˜ ์กฐ๊ฑด๋ถ€ ๋ถ€๋ถ„์ด ์•„๋‹ˆ๋ผ ์ „์ฒด ํ‘œํ˜„์‹๊ณผ ๊ด€๋ จ๋˜๋ฏ€๋กœ ํ˜•์‹์„ ์ง€์ •ํ•  ๋•Œ ์ด์ œ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค. var result = errorState ? foo : ๋‚˜์˜๋‹ค ..doIt();
  • Apple M1(์‹ค๋ฆฌ์ฝ˜) ํ”„๋กœ์„ธ์„œ์— ๋Œ€ํ•œ ์ง€์›์ด SDK์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Apple Silicon ํ”„๋กœ์„ธ์„œ๊ฐ€ ํƒ‘์žฌ๋œ ์‹œ์Šคํ…œ์—์„œ Dart VM, ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฐ SDK ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์ด๋Ÿฌํ•œ ์นฉ์— ๋Œ€ํ•œ ์‹คํ–‰ ํŒŒ์ผ ์ปดํŒŒ์ผ ์ง€์›์„ ๋ชจ๋‘ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • "dart pub" ๋ช…๋ น์— ์ƒˆ๋กœ์šด ์„œ๋น„์Šค ํŒŒ์ผ ".pubignore"์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด pub.dev ์ €์žฅ์†Œ์— ํŒจํ‚ค์ง€๋ฅผ ๊ฒŒ์‹œํ•  ๋•Œ ๊ฑด๋„ˆ๋›ธ ํŒŒ์ผ ๋ชฉ๋ก์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์€ ".gitignore" ๋ฌด์‹œ ๋ชฉ๋ก์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์–ด๋–ค ์ƒํ™ฉ์—์„œ๋Š” pub.dev๊ฐ€ Git์— ํ•„์š”ํ•œ ํŒŒ์ผ(์˜ˆ: ๊ฐœ๋ฐœ ์ค‘์— ์‚ฌ์šฉ๋˜๋Š” ๋‚ด๋ถ€ ์Šคํฌ๋ฆฝํŠธ)์˜ ์ „์†ก์„ ํ”ผํ•˜๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).
  • ๋ฒ„์ „ ๋ฒˆํ˜ธ๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ pubspec์„ ๋ณ€๊ฒฝํ•œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†๋Š” "dart test" ๋ช…๋ น์˜ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ECMAScript 5 ํ˜ธํ™˜ ๋ชจ๋“œ์—์„œ์˜ ์ปดํŒŒ์ผ ์ง€์›์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด IE11 ๋ธŒ๋ผ์šฐ์ €์™€์˜ ํ˜ธํ™˜์„ฑ์ด ์†์‹ค๋จ).
  • ๊ฐœ๋ณ„ ์œ ํ‹ธ๋ฆฌํ‹ฐ stagehand, dartfmt ๋ฐ dart2native๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ dart ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋˜๋Š” ๋‚ด์žฅ ๋ช…๋ น์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • VM Native Extensions ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Dart ์ฝ”๋“œ์—์„œ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด Dart FFI(Foreign Function Interface)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋™์‹œ์— React Native์˜ ๋Œ€์•ˆ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ณ  ํ•˜๋‚˜์˜ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ iOS, Android, Windows, macOS ๋ฐ Linux์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ถœ์‹œํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ํ”„๋ ˆ์ž„์›Œํฌ Flutter 2.5์˜ ์ค‘์š”ํ•œ ๋ฆด๋ฆฌ์Šค๊ฐ€ ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์„ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Google์—์„œ ๊ฐœ๋ฐœํ•œ Fuchsia ๋งˆ์ดํฌ๋กœ์ปค๋„ ์šด์˜ ์ฒด์ œ์šฉ ๋งž์ถค ์…ธ์€ Flutter๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Flutter ์ฝ”๋“œ์˜ ์ฃผ์š” ๋ถ€๋ถ„์€ Dart ์–ธ์–ด๋กœ ๊ตฌํ˜„๋˜์—ˆ์œผ๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์„ ์œ„ํ•œ ๋Ÿฐํƒ€์ž„ ์—”์ง„์€ C++๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•  ๋•Œ Flutter์˜ ๊ธฐ๋ณธ Dart ์–ธ์–ด ์™ธ์—๋„ Dart Foreign Function ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ C/C++ ์ฝ”๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋Œ€์ƒ ํ”Œ๋žซํผ์šฉ ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผํ•˜์—ฌ ๋†’์€ ์‹คํ–‰ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๊ฐ ๋ณ€๊ฒฝ ํ›„์— ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. Dart๋Š” ์‹คํ–‰ ์ค‘์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ณ€๊ฒฝํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ฆ‰์‹œ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ํ•ซ ๋ฆฌ๋กœ๋“œ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Flutter 2.5์˜ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ:

  • ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ตœ์ ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. iOS ๋ฐ macOS ํ”Œ๋žซํผ์—์„œ๋Š” Metal ๊ทธ๋ž˜ํ”ฝ API์šฉ ์…ฐ์ด๋” ์‚ฌ์ „ ์ปดํŒŒ์ผ์ด ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋น„๋™๊ธฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ํšจ์œจ์„ฑ์ด ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํšŒ์ˆ˜ํ•  ๋•Œ ์ง€์—ฐ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: 20์ดˆ ์• ๋‹ˆ๋ฉ”์ด์…˜ GIF๋ฅผ ์žฌ์ƒํ•˜๋Š” ๋™์•ˆ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘ ์ž‘์—… ์ˆ˜๊ฐ€ 400์—์„œ 4๋กœ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค. Dart์™€ Objective ๊ฐ„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•จ) C/Swift๋Š” 50%(iOS)๋กœ ์ค„์—ˆ๊ณ  Java/Kotlin(Android)์€ Apple Silicon ์นฉ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๋นŒ๋“œ ์ง€์›์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
    Dart 2.14 ์–ธ์–ด ๋ฐ Flutter 2.5 ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Android ํ”Œ๋žซํผ์˜ ๊ฒฝ์šฐ ์ „์ฒด ํ™”๋ฉด ๋ชจ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ๋Œ€ํ•œ ์ง€์›์ด ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ฐจ์„ธ๋Œ€ ๋จธํ‹ฐ๋ฆฌ์–ผ ๋””์ž์ธ ์˜ต์…˜์œผ๋กœ ์ œ์‹œ๋œ 'Material You' ๋””์ž์ธ ์ปจ์…‰์˜ ๊ตฌํ˜„์€ ๊ณ„์†๋๋‹ค. ์ƒˆ๋กœ์šด ์ƒํƒœ MaterialState.scrolledUnder๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํฌ๊ธฐ ์กฐ์ • ์‹œ ์Šคํฌ๋กค ๋ง‰๋Œ€์˜ ๋™์  ํ‘œ์‹œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ ์•Œ๋ฆผ ๋ฐฐ๋„ˆ ํ‘œ์‹œ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์นด๋ฉ”๋ผ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ๊ธฐ๋Šฅ์ด ํฌ๊ฒŒ ํ™•์žฅ๋˜์–ด ์ž๋™ ์ดˆ์ , ๋…ธ์ถœ, ํ”Œ๋ž˜์‹œ, ์คŒ, ๋…ธ์ด์ฆˆ ๊ฐ์†Œ ๋ฐ ํ•ด์ƒ๋„๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋„๊ตฌ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์—…๋ฐ์ดํŠธ๋œ ์œ„์ ฏ ๊ฒ€์‚ฌ ๋ชจ๋“œ์™€ ๋ Œ๋”๋ง ์ง€์—ฐ ์‹๋ณ„ ๋ฐ ์…ฐ์ด๋” ์ปดํŒŒ์ผ ์ถ”์ ์„ ์œ„ํ•œ ๋„๊ตฌ๋ฅผ ํฌํ•จํ•˜๋„๋ก ๊ฐœ๋ฐœ์ž ๋„๊ตฌ(DevTools)๊ฐ€ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    Dart 2.14 ์–ธ์–ด ๋ฐ Flutter 2.5 ํ”„๋ ˆ์ž„์›Œํฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • Visual Studio Code ๋ฐ IntelliJ/Android Studio์šฉ ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€