오늘은 Flutter의 기반 언어인 Dart에 대해 알아보겠습니다. 😖
우선 Dart의 타입부터 알아볼까요~?🤓
dynamic name = '다트';
name = 2;
name = 'flutter';
var name = '다트';
name = 2; // error
name = '플러터;
final name = '다트';
name = '리액트 네이티브'; // error
const name = '다트';
name = '리액트 네이티브'; // error
final과 const는 한번 설정한 값을 변경할 수 없게 한다는 공통점이 있는 반면, 차이점도 존재한다.
예를 들어 DateTime.now() 의 경우 Run 버튼을 누른 후에 실행되는 코드이기 때문에, 런타임에서 호출 될 때마다 결과 값이 다르다. 이러한 값은 const로 설정할 수 없다.
final DateTime now = DateTime.now();
const DateTime now = DateTime.now(); // error
null이 될 수 없음
String name = '다트'; // only String
name = null; // error
null이 될 수 있음
String? name = '다트'; // string | null
name = null;
특정 변수를 Null Check하고, Null일 경우 다른 값 대입
String x = '다트';
String y = '리액트 네이티브';
String result = x ?? y // x가 널이 아니기 때문에 x가 대입된다.
print(result); // 다트
특정 변수를 Null Check하고, 초기 값을 대입
String x = null;
String y = '리액트 네이티브';
String result = x ??= y // x가 널이기 때문에 y가 대입된다.
print(result); // 리액트 네이티브
특정 변수를 Null Check하고, Null이 아니면 메소드 실행
Map<String, dynamic> x = {'address': 'Seoul'};
x?.forEach((key, value) => print('$key: $value')); // address: Seoul
int? x = null;
int y = x!;
print(y); // error
int? x = 2;
int y = x!;
print(y); // 2
int x = 1;
print(x is int); // true
print(x is String); // false
print(x is! int); // false
print(x is! String); // true
참고