๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‹ | ๊ธฐํƒ€ ๊ธฐ์ˆ /๐Ÿ“Œ | Dart

[Dart] Dart ๋ฌธ๋ฒ• (1)

by immgga 2023. 12. 26.

 

์˜ค๋žœ๋งŒ์— ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•ด ๋ณธ๋‹ค.(๊ฑฐ์˜ ํ•œ ๋‹ฌ๋งŒ)

์ตœ๊ทผ์— ํšŒ์‚ฌ์— ์ทจ์งํ•ด์„œ ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ๋“ค์ด ๋งŽ์•„์„œ ๋ธ”๋กœ๊ทธ ๊ด€๋ฆฌ์— ์†Œํ™€ํ–ˆ์—ˆ๋‹ค.

ํšŒ์‚ฌ์—์„œ๋Š” flutter๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ์— flutter์— ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ธ dart ๋ฌธ๋ฒ•๋ถ€ํ„ฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐ์›Œ๋ณด๋„๋ก ํ•˜์ž.

๊ฑฐ๋‘์ ˆ๋ฏธํ•˜๊ณ  ๋ฐ”๋กœ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

1. Dart ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ทœ์น™

๋จผ์ € ๊ฐ„๋‹จํ•˜๊ฒŒ dart ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ทœ์น™์„ ์•Œ์•„๋ณด์ž.

  • ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ˆ˜ํ–‰๋œ๋‹ค
  • ์ฝ”๋“œ๊ฐ€ ๋๋‚˜๋ฉด ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ๋ถ™์ธ๋‹ค.

์œ„์— ๊ทœ์น™๋“ค ๋‘˜ ๋‹ค ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋“ค์˜ ๊ทœ์น™๊ณผ ์œ ์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํฌ๊ฒŒ ์‹ ๊ฒฝ ์“ธ ๋ถ€๋ถ„์€ ์—†๋‹ค.

 

2. ๋ณ€์ˆ˜ ์„ ์–ธ

๋ณ€์ˆ˜ ์„ ์–ธ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.

var a = 'immgga';

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.(์œ„์˜ ์ฝ”๋“œ๋Š” string ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ๊ฒƒ์ด๋‹ค.)

๋ณ€์ˆ˜ ํƒ€์ž…์„ ๋ช…ํ™•ํžˆ ํ•  ์ˆ˜ ์—†์„ ๋•Œ์—๋Š” var๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ๋Š” ํƒ€์ž…์„ ์ง์ ‘ ์ง€์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ๋ณด๊ฒ ๋‹ค.

int intVariable = 10;
double doubleVariable = 10.0;
bool boolVariable = true;
String stringVariable = 'hello';

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒํ˜• 4๊ฐœ๋ฅผ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•ด ๋ณด์•˜๋‹ค.

string ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ์—๋Š” s๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ์จ์•ผ ํ•œ๋‹ค๋Š” ์ ๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋˜๊ฒ ๋‹ค.

 

์ด์ œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด ๋ณด๊ฒ ๋‹ค.

a = 'tistory';

๋งจ ์œ„์— ์„ ์–ธํ•œ a ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž…์„ ์ง€์ •ํ•œ ๋ณ€์ˆ˜๋“ค๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค(๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฑด ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ์€ ์—†๊ฒ ์ง€?)

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

 

๋ณ€์ˆ˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์–‘ํ•œ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ๋˜์–ด๋„ ์ƒ๊ด€์—†์„ ๋•Œ์—๋Š” dynamic ํ‚ค์›Œ๋“œ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋‹ค.

dynamic dynamicVariable = '10';
dynamicVarialbe = 10;	// ์˜ค๋ฅ˜ ์•ˆ๋‚จ

์ฒ˜์Œ์—๋Š” string์œผ๋กœ ์„ ์–ธํ•˜์˜€์ง€๋งŒ int ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ๋„ ์ „ํ˜€ ๋ฌธ์ œ ๋˜์ง€ ์•Š๋Š”๋‹ค.

ํ•˜์ง€๋งŒ ํƒ€์ž… ๋ณ€๊ฒฝ์˜ ์ž์œ ๋„๊ฐ€ ๋†’๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜์ค‘์— flutter๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ dynamic ํ‚ค์›Œ๋“œ๋ฅผ ๋‚จ๋ฐœํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ์—

๋ณ€์ˆ˜ ํƒ€์ž…์€ ์ง์ ‘ ์ง€์ •ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํ•ด๋ณด๊ฒ ๋‹ค.

final int finalVariable = 10;
const int constVariable = 10;

final, const ํ‚ค์›Œ๋“œ๋กœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ํƒ€์ž… ๋ช…์‹œ(int)๋Š” ์•ˆ ํ•ด์ค˜๋„ ๋ฌธ์ œ๋Š” ์—†์ง€๋งŒ ํ•ด์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค.

 

final๊ณผ const์˜ ์ฐจ์ด๋Š” final์€ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๊ฐ’์ด ์ €์žฅ๋˜์–ด์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ณ ,

const๋Š” ์ฝ”๋“œ ์‹คํ–‰ ์ „๋ถ€ํ„ฐ ๊ฐ’์ด ์ €์žฅ๋˜์–ด์„œ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

๋ณด๋‹ค ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ๊ณต๋ถ€ํ•ด ๋ณด๋„๋ก ํ•˜์ž.

https://jong99.tistory.com/166

 

[Dart, Flutter] Const vs. Final (Const์™€ Final์˜ ์ฐจ์ด์ )

Final VS Const Final๊ณผ Const๋Š” ๋‘˜ ๋‹ค ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์†์„ฑ์„ ๋œปํ•œ๋‹ค. void main() { const int myConst = 2; final int myFinal = 3; myConst = 4; // error ๋ฐœ์ƒ, Const ๋ณ€์ˆ˜์—๋Š” ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†๋‹ค. myFinal = 6; // error ๋ฐœ์ƒ, Final

jong99.tistory.com

 

3. dart์˜ null safety

dart์• ๋„ kotlin์ฒ˜๋Ÿผ null ์•ˆ์ •์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.

null ํ—ˆ์šฉ์ด ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

String? stringNullableVariable = null;

String ํ‚ค์›Œ๋“œ ๋’ค์— ? ๊ธฐํ˜ธ๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.

๋ณ€์ˆ˜ ํ‚ค์›Œ๋“œ ๋’ค์— ? ๊ฐ€ ๋ถ™์€ ๋ณ€์ˆ˜๋Š” null์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์ง€๋งŒ ? ๊ธฐํ˜ธ๊ฐ€ ์—†๋Š” ๋ณ€์ˆ˜์—๋Š” ๋“ค์–ด๊ฐ€๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

ํ˜„์žฌ ๋ณ€์ˆ˜ ๋ฐ์ดํ„ฐ๊ฐ€ null์ด ์•„๋‹˜์„ ๋‹จ์ •์ง€์œผ๋ ค๋ฉด ! ๊ธฐํ˜ธ๋ฅผ ๋ณ€์ˆ˜ ๋’ค์— ๋ถ™์ด๋ฉด ๋œ๋‹ค.

print(stringNullableVariable!);		// stringNullableVariable์€ null์ด ์•„๋‹ˆ๋‹ค.

์œ„์™€ ๊ฐ™์ด null์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ! ๋ฅผ ๋ถ™์ธ ๋ณ€์ˆ˜๊ฐ€ null์ด๋ฉด exception์ด ๋ฐœ์ƒํ•œ๋‹ค.

 

dart์˜ nullable์€ kotlin์˜ nullable๊ณผ ํก์‚ฌํ•œ ์ ์ด ๋งŽ๋‹ค.

 

์ •๋ฆฌ

  • flutter๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์ด์ „์— dart๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ์ด์ œ์•ผ ๋ธ”๋กœ๊ทธ๋ฅผ ์˜ฌ๋ฆฌ๋Š”๋ฐ, ํ•„์ž ๊ธฐ์ค€์—๋Š” c์–ธ์–ด๋ณด๋‹ค๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  kotlin ๋ณด๋‹ค๋Š” ๋ณต์žกํ•œ ์–ธ์–ด ๊ฐ™๋‹ค.
  • ์ถ”ํ›„์—๋Š” flutter๋ฅผ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋ธ”๋กœ๊ทธ๋กœ ์˜ฌ๋ ค๋ณผ ๊ณ„ํš์ด๋‹ค.
  • dart ๋ฌธ๋ฒ• ํฌ์ŠคํŒ…์€ ๊ณ„์† ์˜ฌ๋ผ๊ฐˆ ์˜ˆ์ •์ด๋‹ค.

์ฐธ๊ณ ํ•  ๋งŒํ•œ ๊ฐ•์˜

https://www.inflearn.com/course/dart-%EC%96%B8%EC%96%B4-%EC%9E%85%EB%AC%B8

 

[์ง€๊ธˆ ๋ฌด๋ฃŒ] [์ฝ”๋“œํŒฉํ† ๋ฆฌ] [์ž…๋ฌธ] Dart ์–ธ์–ด 4์‹œ๊ฐ„๋งŒ์— ์™„์ „์ •๋ณต ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ

์ด ๊ฐ•์˜๋ฅผ ํ†ตํ•ด Dart ์–ธ์–ด๋ฅผ ๋ฐฐ์šฐ๋ฉด Flutter๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„์˜ ์ˆ˜์ค€์œผ๋กœ์˜ ์—…๊ทธ๋ ˆ์ด๋“œ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!, ๊ฐœ๋ฐœ์— ๋Œ€ํ•ด ์•„๋ฌด ๊ฒƒ๋„ ๋ชฐ๋ผ๋„ ๊ดœ์ฐฎ์•„์š” ๐Ÿ’‍โ™€๏ธ๋‚ด ์†์œผ๋กœ ์•ฑ ๋งŒ๋“ค๊ธฐ ์ฒซ๊ฑธ์Œ!  Dart

www.inflearn.com

728x90