How to make Class & How to use Class
- Dart의 class에서는 this를 꼭 쓰지 않아도 된다. (method내에 같은 이름의 변수가 있어서 어쩔수 없이 쓸때를 제외하고는 쓰지않는것을 권고)
class Players {
final String name;
int xp;
Players(this.name, this.xp);
void sayhello() {
print("Hi my name is $name");
}
}
void main () {
var player = Players("minsu", 2500);
player.sayhello();
}
ConStructors
- constructor method(생성자 함수)의 이름은 class의 이름과 같아야 한다.
class Players {
late final String name;
late int xp;
Players(String name, int xp) {
this.name = name;
this.xp = xp;
}
void sayhello() {
print("Hi my name is $name");
}
}
==
class Players {
final String name;
int xp;
Players(this.name, this.xp);
void sayhello() {
print("Hi my name is $name");
}
}
void main () {
var player = Players("minsu", 2500);
player.sayHello();
}
Named Constructor Parameters
- 함수에서 사용한것과 같이 쓸수 있으며, required 와 초기값을 주는 방식 둘다 사용 가능하다.
class Players {
final String name;
int xp;
String team;
int age;
Players({
required this.name,
required this.xp,
required this.team,
required this.age,
});
void sayhello() {
print("Hi my name is $name");
}
}
void main () {
var player = Players(
name :"minsu",
xp : 2500,
team : "blue",
age: 12,
);
player.sayhello();
}
Named Constructors
- : (콜론)을 사용하면 argument와 property를 일대일 초기화하는 생성자를 만들 수 있다.
class Players {
final String name;
int xp, age;
String team;
Players({
required this.name,
required this.xp,
required this.team,
required this.age,
});
Players.createBluePlayer({
required String name,
required int age,
}) **: this.name = name,
this.age = age,
this.xp = 0,
this.team = 'blue';**
void sayhello() {
print("Hi my name is $name");
}
}
void main () {
var bluePlayer = Players.createBluePlayer(name : 'musinsa', age : 27);
bluePlayer.sayhello();
}
Named Constructors 2
- api호출해서 data를 가져와서 사용한다고 가정했을때
class Players {
final String name;
int xp;
String team;
Players.fromJson(Map<String, dynamic> playerJson)
: name = playerJson['name'],
xp = playerJson['xp'],
team = playerJson['team'];
void sayHello() {
print("Hi my name is $name");
}
}
void main () {
var apiData = [
{
"name": "minsu",
"team" : "blue",
"xp" : 10,
},
{
"name": "solji",
"team" : "blue",
"xp" : 10,
},
{
"name": "sunghun",
"team" : "blue",
"xp" : 10,
},
];
apiData.forEach((playerJson) {
var player = Players.fromJson(playerJson);
player.sayHello();
});
}