상세 컨텐츠

본문 제목

[ 노마드 코더 / Dart ] Dart 시작하기 #1 VARIABLES

App/Flutter (+Dart)

by 감싹이 2023. 4. 17. 23:20

본문

노마드 코더 무료 다트 강의 정리 노트

 


## 오늘의 공부 : Dart 시작하기

### Variables

- void main() { }
- ; 필요

```
void main() {
  var name = '니꼬';
  print(name);
}
```

- dart는 알아서 타입 추측

```
void main() {
  var name = '니꼬';
  name = 1;
}
```
- 다른 타입 노노

- 관습적으로 함수나 메소드 내부에 지역 변수를 선언할 때 var 사용
- class에서 변수나 property를 선언할 때는 타입 지정

- 함수 안에서 지역 변수를 선언하거나 아니면 메소드 안에서 지역 변수를 선언하는 상황이라면 var를 사용하는 게 dart 스타일가이드의 권장 방식


```
void main() {
  var name = '니꼬';
  name = 'nico';
}
```
- 재선언 가능


#### Dynamic Type
```
void main() {
  dynamic name;
  if(name is String){
   
  }
  ///////////////////
}
```
- 타입이 정의되면 다양한 내장 함수를 사용할 수 있음
- 정말 필요한 경우에만 써야 함!


#### null safety
- 어떤 변수가 null이 될 수 있음을 명시해주는 것
```
bool isEmpty(String string) => string.length == 0;
main(){
    isEmpty(null);
}
```
- compiler not catch <- 해결하기 위해 dart는 null safety를 만듦

```
void main() {
    String? nico = 'nico';
    nico = null;
    if(nico != null){
        nico.isNotEmpty;
    }
}
```
- null도 될 수 있고 String일 수도 있다 ==> 자료형 뒤에 ?(물음표)
- 내장 함수를 사용하기 전에 항상 체크하는 과정을 가져야 함

-if로 체크하기 싫다면
```
void main() {
    String? nico = 'nico';
    nico = null;
    nico?.isNotEmpty
}
```

- dart 변수는 기본적으로 nullable이 아니라는 것만 기억하자



#### Final Variables
```
void main() {
    final name = 'nico';
}
```

#### Late Variables
```
void main() {
    late final String name;
    // do something, go to api
    name = 'nico' //여전히 final이기 때문에 재선언 불가
}
```
- 데이터 없이 변수를 만들어주고 나중에 변수에 데이터 선언
- 값을 넣기 전에 접근하지 못하도록 dart가 막아줌
- api에서 값을 얻어와야 할 경우 등에서 많이 사용


#### Constant Variables

- javascript의 const는 dart의 final과 유사함
- compile-time constant

```

void main() {
    const API = fetchApi(); // (x) 컴파일러는 API 변수 값을 모름
 
    final API2 = fetchApi();
 
}
```

 

관련글 더보기