Dart에서 변수 사용 방법에 대해 알아보겠습니다.
변수를 만드는 2가지 방법
dart에서는 변수를 var 키워드 또는 명시적으로 변수의 타입을 지정해서 사용합니다. 다른 타입의 변수는 서로 대입할 수 없습니다.
1 | // 방법 1 |
1 | // 방법 2 |
var를 사용하는 게 dart 스타일가이드의 권장 방식입니다.
함수나 메소드 내부에 지역변수를 선언할 때는 var를 사용하고 class에서 변수나 property를 선언할 때는 타입을 지정해 줍니다.
Dynamic 타입
여러 가지 타입을 가질 수 있는 변수에 쓰는 키워드입니다. 변수를 선언할 때 dynamic을 쓰거나 값을 지정하지 않으면 dynamic 타입을 가집니다.
1 | void main() { |
1 | void main() { |
dynamic 타입은 언제 사용될까?
- 해당 변수의 타입을 알 수 없을 때 주로 사용합니다. 예를 들어 json을 작업할 경우입니다.
- 하지만 dynamic 타입은 다양한 타입을 가질 수 있기 때문에 정말 필요할 때만 사용해야 합니다. (위험 방지)
Null Safety
null safety는 개발자가 null 값을 참조할 수 없도록 하는 것입니다.
String 뒤에 ?를 붙여줌으로써 name 이 String 또는 null 이 될 수 있다고 명시해 준 것입니다. 기본적으로 모든 변수는 non-nullable(null이 될 수 없음)입니다.
1 | void main() { |
final 변수
var 대신 final로 변수를 만들게 되면 이 변수는 수정할 수 없게 됩니다. (딱 한 번만 설정될 수 있음) 자바스크립트의 const 랑 비슷합니다.
1 | void main() { |
late 변수
초기 데이터 없이 먼저 변수를 생성하고 추후에 데이터를 넣을 때 주로 사용합니다. flutter로 data fecthing을 할 때 유용합니다.
late 변수를 만들고, API에 요청을 보낸 뒤에 API에서 값을 보내주면 그 응답 값을 late 변수에 넣어 사용할 수 있습니다.
1 | void main() { |
const 변수
dart에서 const는 compile-time constant를 만들어줍니다. const는 컴파일할 때 알고 있는 값을 사용해야 합니다.
만약 어떤 값인지 모르고, 그 값이 API로부터 오거나 사용자가 화면에서 입력해야 하는 값이라면 그건 const가 아닌 final이나 var가 되어야 합니다.
1 | void main() { |
- const: 컴파일 시점에 바뀌지 않는 값 (상수)
- final: 컴파일 시점에 바뀌는 값 (API에서 받아온 값, 사용자 입력값)