Study

[Flutter] Dart - 1. Variables

미리구 2024. 8. 25. 00:13

1. Var

var name = '미리'; // 변수 선언 방법 1 → 함수, 메소드 내부 지역변수 선언시 사용
String name1 = "MiRi"; // 변수 선언 방법 2 → class에서 변수나 property 선언시 사용
print(name);
print(name1);

2. Dynamic

var name; // 여러 타입을 가질 수 있는 변수 선언 방법 1
dynamic name1; // 여러 타입을 가질 수 있는 변수 선언 방법 2 → 단, 정말로 써야할 때만 사용하도록!

if (name1 is String) {
  // 다이나믹으로 변수 선언한 경우, 위와 같이 조건문 선언하면 내부에서 name3는 타입을 String으로 인식하여 관련 메서드 사용 가능
  name1.isEmpty;
}
name = 'MiRi';
name = 30;

3. Null Safety

String? name = 'MiRi'; // ?를 사용하면 타입이 String || null 이 될 수 있음
name = null;
// name4가 특정 타입의 메서드를 사용하려면 null이 아님을 확인해야함
if (name != null) {
  name4.length;
}
// 간단하게는 아래와 같이 작성도 가능
name?.isNotEmpty;

4. Final

final name = 'MiRi'; // 수정 불가한 변수 선언 방식 → JS의 const와 같음

// 더 구체적으로 작성할 경우 타입 추가(선택 사항)
// 컴파일러가 추측잘하기때문에 따로 작성안해도 됨
final String name = 'MiRi';

5. Late

//  1. var 또는 final 앞에 사용
//  2. 초기 데이터 없이 변수 선언 가능하게 해줌
//  3. 실수를 막아주기 좋음
//  4. data fetching에 좋음

late final String name;
// API 호출하고 응답받은 데이터를 name에 할당
name = "res";

6. Const

//  1. 컴파일 타임에 알고 있는 값이어야 함
//  2. 절대 바뀌지 않을 값
const max_allowed_price = 120;

// 앱스토어에 올리기전 알고 있어야 하는 값 → const
// 어떤 값인지 모르고 api로부터 오거나 사용자가 화면에서 입력하는 값인 경우 → final | var