void main() {
String name = '주삐';
bool alive = true;
int age = 12;
double money = 69.99;
num x = 12;
x = 1.1;
}
위 데이터 타입을 포함해서 Dart의 거의 전부가 Object로 이루어져있다. (심지어 function도 object)
이는 Dart가 진정한 객체 지향 언어로 불리는 까닭이다 !
데이터 타입에서 마우스 우클릭으로 go to type definition을 클릭해서 정의부분으로 이동하면, 위 모든 데이터가 class로 작성된 것을 확인할 수 있다.
int와 double은 num이란 클래스를 상속받아서 구현되어있다.
num 자료형을 사용해서 변수를 선언하면, 그 숫자는 integer일 수도 있고, double일 수도 있다.
void main() {
var numbers = [1, 2, 3, 4,]; // List<int>
}
리스트는 플러터에서 매우 자주 쓰인다.
파이썬과 달리, 하나의 리스트에는 한 종류의 자료형만 존재할 수 있다.
number.first
: 첫번째 요소를 반환한다.number.last
: 마지막 요소를 반환한다.위 두 가지 말고도 다양한 메서드를 지원하니, 필요할 때 잘 찾아서 사용하면 된다.
collection if로 리스트를 생성할 수 있는데, if로 존재할 수도 안할 수도 있는 요소를 만들 수 있다.
void main() {
var giveMeFive = true;
var numbers = [
1,
2,
3,
4,
if (giveMeFive) 5,
];
}
위 코드 처럼 List 안에서 if 문을 사용해서 조건에 따라 요소를 추가할 수 있다.
collection for 이라는 기능도 지원하는데, 그 전에 string interpolation에 대해 알아보자.
string interpolation은 text에 변수를 추가하는 방법이다.
void main() {
var name = '주삐';
var greeting = 'Hello, my name is $name';
}
void main() {
var oldFriends = ['주삐', '갱미'];
var newFriends = [
'하니',
'조이',
for (var friend in oldFriends) '💛 $friends',
];
print(newFriends);
// [하니, 조이, 💛 주삐, 💛 갱미]
}
collection if나 collection for 같은 기능은 UI를 만들 때 매우 유용한 기능이다.
예를 들어 메뉴나 내비게이션 바를 만드는데 user가 로그인했는지 안했는지 나타내는 버튼을 만들어야할 때 사용할 수 있다. (코드 길이도 짧아지고 가독성도 좋아짐)
dart의 map은 js, ts의 object와 python의 map과 같은 자료형이다.
void main() {
// Type: Map<String, Object>
var player = { 'name': 'juppi',
'xp': 19.99,
'superpower': true,
};
}
key와 value로 이루어진 Map을 생성했는데, key는 String이고 value는 object다.
Object란 뭘 까 ? Dart에서는 기본적으로 모든 것이 Object로부터 생성되기 때문에 Object는 어떤 자료형이든지 될 수 있다. (Typescript의 any로 이해하면 된다.)
dart에서는 모든 것이 object이고, class로 생성되기 때문에 Map도 method와 property를 가질 수 있다.
void main() {
var numbers = {1, 2, 3, 4};
}
set에 속한 모든 아이템은 유니크하다.