Dart - 4. Class

guddls ju·2023년 5월 26일
0

flutter 공부

목록 보기
3/5

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();
  });
}
profile
효율에 미친자

0개의 댓글