reactJS같은 경우 JavaScript 기반으로 만들어 졌다. 하지만 빠르고 쾌적한 사용을 위해 reactJS팀은 입맛에 맞게 JavaScript를 바꿀 수 없지만, flutter와 dart는 같은회사의 가까운 협력관계이므로 원한다면 flutter에 맞게 dart를 업데이트하여 바꿀 수 있다. 그정도로 flutter와 한 몸같은 언어 이다. flutter에서 새로운 프레임워크가 필요하다면 dart에서 최적화 해주는것이 가능하단 이야기이다.
['dartpad.dev'] 이곳에 들어가면 바로 별도의 설치없이 dart 에디터를 실행 할 수 있다.
flutter도 마찬가지로 객체지향 프레임워크이고 항상 class를 사용한다.
voide main() {
print('hello world');
}
;
을 안쓸 수도 있지만 심각한 문제를 유발하기도 한다. 그동안 자바스크립트와 타입스크립트는 굳이 달지 않아도 formatter
나 VisualStudioCode
에서 자동으로 세미콜론을 달아준다. 하지만 여기선 그렇지 않다. 왜냐하면 dart에선 일부러 세미콜론을 달지 않을때가 있기에 그렇다.
main
함수안에 포함이 된다.반드시 main 함수 안에 포함이 되어야 하며, 코드는 main함수 내부에 작성이 된다.
void main () {
var name = 'lee';
// name != 1
// 업데이트 할 수 없다
String name = 'lee'
// 타입명으로 변수를 만들어 줄수 있다.
}
변수에는 같은 타입의 값만 들어올 수 있으며, 숫자나 다른 변수타입의 값은 할당할 수가 없다. 그리고 명시적으로 String같은 타입으로 명시적인 변수를 만들수 있다.
voide main() {
var name; // dynamic name;
name = "lee";
name = true;
name = 12;
}
이상적으론 쓰는것을 피하는것이 맞다.
voide main() {
String? lee = 'lee';
// dart가 string 혹은 null 여부가능을 말한다.
lee = null;
lee?.isNotEmpty;
}
dart는 위와같이 지정해둔다면 null일수 있다는것을 알게된다.
voide main() {
fianl String name = 'lee';
name = 'lee';
}
const
와 같다. final을 붙이면 변수의 값을 바꿀 수가 없다. 그리고 구체적으로 하기위해 타입도 위처럼 추가해줄 수있다. (String은 없어도 그만 있어도 그만.. )
`late`는 아직 어떤데이터가 올지 모른다고 말해주는것이다.
```
voide main() {
late final String name;
name ='12'
print(name);
}
```
그래서 데이터를 '나중에' 넣고 그뒤에 변수를 사용하겠다는 이야기이다.
아직 정의되지않은 late 변수에 접근할 수 없다.
자바스크립트와 타입스크립트와는 다른양상이다. 변수들은 컴파일할때 평가될것이다. 컴파이리할때 값을 알고있는 변수를 만들때 쓰는 방법이다.
공식적으로 var
사용이 권장되고 String
이나 int
같은 타입을 변수로 사용하는 것은 class과 property를 사용할때 권장된다. 작은 함수나 지역변수에서는 var를 쓰는것이 더 좋다.
변수의 수정허용을 하지않는다면 final
을 사용한다. dynacmic
은 아주 조심스럽게 써야하며 자주쓰는것을 권장하지 않는다. 데이터가 무엇이 들어올지 모를때 쓴다.