3. var
How to make 변수 in flutter
1. 키워드 사용
관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 주로 쓰는 방법
var를 예시로 들면 var 라는 키워드를 쓰고, 변수의 이름을 적고, 그 안에 저장하고 싶은 데이터를 적으면 된다.
void main () {
var [변수이름] = [데이터 값];
var name = 'minsu';
name = 'sumin';
}
- 변수의 타입을 구체화할 필요가 없었다. (Dart 컴파일러는 name이 string이라는 것을 안다) => 타입 추측
- 변수에 값을 재할당 할 때 당연하게도 타입을 유지해야한다.
2. 명시적 변수 타입 지정
class에서 변수나 property를 선언할 때 사용
void main () {
String name = 'minsu';
name = 'sumin';
}
- Dart는 기본적으로 var를 사용해 변수를 선언하는 방식을 더 권장한다.
- 타입을 사용하는 방식은 class의 property를 작성할 때 사용하는 게 권장된다.
- 메소드나 작은 함수 안에서 지역 변수를 선언할 떄는 var를 사용하는게 더 좋다.(컴파일러가 타입을 구체화함)
var
- 수정될 수 있다. (물론 타입을 지켜야 한다 ex) int → int)
4. Dynamic Type
dynamic : 여러가지 타입을 가질 수 있는 변수에 쓰는 키워드
- 사용을 추천하진 않지만 때때로 유용하다. 정말 필요할때만 쓰자!
5. nullable
null safety : 개발자가 null 값을 참조할 수 없도록 하는 것
- 코드에서 null값을 참조하면 런타임 에러가 뜬다. 이상적으로 컴파일 전에 잡아내는것이 좋다.
- dart에서는 어떤 변수가 null이 될 수 있음을 정확히 표시해야한다.
- 기본적으로 모든 변수는 non-nullable이다. 어떤 변수를 nullable로 만들고 싶으면 ?(물음표)를 붙여주면 된다.
사용 방법은 ?(물음표)를 붙이는 것이다.
예시)
void main () {
String**?** name = ‘munsu’;
name = null;
}
6. final
final : 수정이 불가능한 변수 ( like const in JS )
void main () {
final String name = 'minsu';
~~name = 'lico';~~
}
7. late
- final이나 var 앞에 붙여 줄 수 있는 수식어
- late는 초기 데이터 없이 변수를 선언할 수 있게 해준다. = 변수를 만드는게 데이터가 없다.
- late를 사용하면 변수를 사용하기 전에 값을 넣게 만들어준다.
void main () {
late final String name;
~~print(name)~~
name = data.name;
}
- late를 사용하면 변수를 먼저 만들고, 나중에 데이터를 넣는게 가능하다.
- 값을 넣기 전에 접근하지 않게 실수를 막아준다.
- flutter로 data fetching을 할 때 유용하다.
8. constant
- js의 const와는 다르다. (JS의 const는 dart에서는 final이 더 비슷하다)
- dart 의 const는 comple-time constant를 만들어 준다.
- comple-time constant : 수정될 수 없는 상수 + compile-time에 알고 있는 값이어야 함