반응형

https://nomadcoders.co/

 

노마드 코더 Nomad Coders

코딩은 진짜를 만들어보는거야!. 실제 구현되어 있는 서비스를 한땀 한땀 따라 만들면서 코딩을 배우세요!

nomadcoders.co

- 자세한 내용은 노마드코더 다트 강의 참고

 

플러터로 크로스플랫폼 앱을 만들기 위해서 사용한다.

플러터로 앱을 만들기 위해서 다트를 필요로 하기 때문에 먼저 공부한다.

기초를 확실히 다져두어야 문제 발생 시,

다트 문제인지 플러터 문제인지 이해할 수 있어야 한다.

다트, 코틀린, 스위프트, 타입스크립트 모두 비슷하다.

 

다트를 특별하게 만들어 주는것은 무엇일까.

다트는 2개의 컴파일러를 가지고 있다.

Dart Web - dart 코드를 javascript로 변환해주는 컴파일러.

Dart Native - dart 코드를 여러 CPU 아키텍쳐에 맞게 변환해준다.

거의 모든곳에서 돌아가도록 개발 가능하다.

JIT - just-in-time (dartVM사용-결과바로확인) - 개발에 용이하다

AOT - ahead-of-time (컴 파일-바이너리배포-사용) - 배포후 사용에 용이하다

null safety - null 참조로 발생하는 문제 방지 (?! 나중에 설명?!)

Dart, Flutter 둘다 구글이 만들었다.

 

Dart 공부에는 편하게 아래 사이트를 이용할 수 있다.

별도로 설치할 필요 없고 코드 작성 후 결과를 확인할 수 있고,

특정 메소드에 대한 설명도 확인할 수 있다.

https://dartpad.dev/

 

DartPad

 

dartpad.dev

 

*1.0. Hello World

 

Dart, Flutter가 이미 설치되어 있다면 빈 프로젝트를 만들어서 테스트 해보아도 좋다.

외부에서 강의를 들으며 작성할 수도 있어서,

필요 시 스크린샷은 dartpad 에서 캡쳐해야 겠다.

 

 

main 함수는 Dart 프로그램의 시작점으로 중요하다.

main 함수가 없을 경우 실행하려고 하면 문제가 발생한다.

라인이 끝나는 경우 세미콜론을 잊지 말자.

 - 세미콜론을 쓰지 않는 경우도 있다. 그건 나중에...

 

* 1.1. The Var Keyword

1.

변수를 만들때에 var 라는 키워드를 사용한다.

업데이트 시 본래 타입과 일치해야한다.

그렇지 않을 경우 에러가 발생한다.

 

똑같은 타입의 데이터를 넣어주는 경우 에러가 발생하지 않는다.

 

2.

명시적으로 변수의 타입 지정하여 변수를 만들 수 있다.

 

두 방법은 어떨때에 사용될까.

var - 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 사용한다. (Dart스타일가이드의 권장 방식)

타입지정 - class에서 변수나 property를 선언할 때 사용한다.

 

* 1.2. Dynamic Type

dynamic - 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드.

무엇이든 될 수 있다고 생각하면 된다.

var 로 변수 선언 후, 값을 정의하지 않을 경우 아래와 같이 사용 가능하다.

dynamic 필요한 이유

 - 변수가 어떤 타입인지 알기 어려운 경우가 있기 때문.

 - 가끔씩 dynamic으로 살짝 돌아가는게 유용한 경우도 있기 때문.

 

var가 아니라 dynamic으로 직접 명시해줄 수도 있다.

 

값이 정의되어 있지 않은 경우 dynamic 변수 타입이 지정되어 있지 않아서

한정적인 자동완성 옵션들이 확인되는 것을 알 수 있다.

 

조건에서 특정 타입을 사용할 경우

아래와 같이 프로그램이 인식해서 해당 타입에 맞는 자동완성 옵션들을 확인할 수 있다.

vscode에서도 마찬가지이다.

이 부분은 Dart가 알아서 확인/처리해준다.

dynamic은 반드시 꼭 필요한 곳에만 사용되어야 한다.

 

#1.3. Nullable Variables

null safety - 개발자가 null 값을 참조할 수 없도록 하는 것.

 

String일수도, null일수도 있다는걸 표현하기 위해서 '?'를 사용한다.

기본적으로 모든 변수는 non-nullable이다.

null이 될 수 없다는 뜻이다.

또한 아래와 같이 줄여서 표현할 수도 있다.

1번과 2번은 동일한 의미로 사용된다.

 

*1.4. Final Variables

final - 한 번 정의된 변수를 수정할 수 없게 만들때 사용한다.

javascript나 typescript의 const와 똑같다.

딱 한번만 설정될 수 있다.

final과 변수명 사이에 String 같은 타입을 넣어줄 수도 있다.

어짜피 Dart에서는 변수값 정의할 때 타입을 알기 때문에 타입을 작성하지 않아도 된다.

 

*1.5. Late Variables

late는 final이나 var 앞에 붙여줄 수 있는 수식어이다.

late는 초기 데이터 없이 변수를 선언할 수 있게 해준다.

초기 데이터 정의를 하지 않고 사용한다면,

dart는 값을 넣기 전에는 접근하지 않아야 한다는 것을 에러로써 알려준다.

추후 데이터가 정의된다면 에러는 발생하지 않는다.

 

*1.6. Constant Variables

dart의 const는 javascript나 typescript와 다르다.

dart의 final 키워드와 비슷하다.

 

dart에서 const는 compile-time constant를 만들어준다.

컴파일 시 정확히 알 수 있는 하드코딩된 값을 사용해야 한다.

앱을 컴파일해서 앱스토어에 올리기 전에 이미 알고 있는 상수 값을 다룰때 사용한다.

ex) max_allowed_price

 

만약 어떤 값인지 모르고 그 값이 API로부터 온다거나

사용자가 화면에서 입력해야 하는 값이라면

그 변수는 final이나 var가 되어야 한다.

 

*1.7. Recap

변수 섹션 복습.

 

'2023' 카테고리의 다른 글

Dart_3_nomadcoders  (0) 2023.07.26
Dart_2_nomadcoders  (0) 2023.07.25
sql,nosql,앱개발,정처기,,,230616  (0) 2023.06.18
2023.01.16. Daily Coding Problem: Problem #3 [Medium]  (0) 2023.01.16
2023.01.14. Daily Coding Problem: Problem #1 [Easy]  (0) 2023.01.16

+ Recent posts