변수
함수나 메소드 지역번수 안에서는 var를 사용하고,
보통 클래스 등 다른 곳에선 명시해줘.
Dynamic
여러가지 타입을 가질 때 쓴다.
걍 js에서 var 같은거.
dart의 var와는 다르다. dart의 var는 타입 변경 불가
null safety
null을 참조할 수 없게 하는거. null 참조하면 런타임 에러 생김. 그렇기에 컴파일 에러로 처리해줘야해.
? => optional null이 되게 할 수도 있다.
단축해서 null이 아닐 때 처리를 할 수 있어.
nico?.isNotEmpty; 하면 null 아닐 때만 처리해줌.
final
js의 const와 같음.바뀌지 않는 값.
타입 생략하고 가능.
ex) final nico = "name";
late
late은 final이나 var 앞에서 사용가능.
late은 데이터 없이 변수를 만들게 해줘.
예) API 받아서 담으려고 할 때 같이 나중에 받을때 사용가능.
const
JS의 const와 다름.
compile time cosnt를 만들어주는 기능.
앱에 담긴 내용을 appstore에 올리기전에 알고 있다.
수정불가.
예) const API_KEY = "123123";
final vs const
const는 값을 이미 알고있어야해 무조건.
final은 runtime중에 생길 수 있지.
?
용도 2가지
타입 뒤에서 변수가 null이 될 수도 있다.
ex) String? name = 'nico';
변수명 뒤에서 조건문 처럼 쓸 수 있다.
ex) name?.isEmpty;
=> name이 null이 아니면 isEmpty 호출