DART

[노마드코더 : Dart 시작하기] #4.2 Named Constructor Parameters

유호야 2022. 11. 20. 07:32
반응형

positional argument each other

into a named argument constructor

required 를 넣어주고, 순서와 관계없이 값을 가져갈 수 있는 형태로 인자를 받아준다.

class Player {
  final String name;
  int xp;
  String team;
  int age;

  Player({
    required this.name,
    required this.xp,
    required this.team,
    required this.age,
  });

  void sayHello() {
    print("Hi, my name is $name");
  }
}

void main() {
  var player = Player(
    name: "PL",
    xp: 500,
    team: "blue",
    age: 21,
  );

  player.sayHello();
  var player2 = Player(
    name: "YJ",
    xp: 100,
    team: "yello",
    age: 25,
  );
  player2.sayHello();
}

복습

 Player(this.name, this.xp, this.team, this.age);
  // parameters are positional - 순서가 있다
  // 무슨 인자가 뭐인지 순서대로 입력해야 알 수 있다.
Player({this.name, this.xp, this.team, this.age});
  // null일수도 있어서 에러가 뜬다.
  Player(
      {required this.name,
      required this.xp,
      required this.team,
      required this.age});

required를 작성함으로써 에러를 막는다.

> 이것이 Flutter에서 자주 사용하게 될 named constructor이다.

 

 

class Player {
  final String name;
  int xp;
  String team;
  int age;

  // late, this value will be defined "late"

  Player(
      {required this.name,
      required this.xp,
      required this.team,
      required this.age});

  // null일수도 있어서 에러가 뜬다.

  void sayHello() {
    print("Hi, my name is $name");
    // unless you made a variable named with 'name'
    // we don't use like $this.name
  }
}

void main() {
  var player = Player(
    name: "nico",
    xp: 1500,
    team: "red",
    age: 20,
  );
  // we don't have to write like new Player();
  player.sayHello();

  var player2 = Player(
    name: "Ronaldo",
    xp: 3000,
    team: "Portugal",
    age: 38,
  );

  player2.sayHello();
}

// if I don't want this to be modified
반응형