til

new Day3 (The default value of an optional parameter must be constant)

paulaner80 2022. 6. 21. 10:35
반응형

"Const variables must be initialized with a constant value."

"The default value of an optional parameter must be constant." 오류 수정

 

상수 생성자

   -.  상수처럼 변하지 않는 객체를 만들어 준다. (동일한 인스턴스를 참조 -> 메모리효율을 높여줌)

   -. 인스턴스 변수가 모두 final 이고, 생성자에 const 키워드가 있어야한다.
  

 

옵셔널 파라미터를 사용하기 위해서는 const 객체가 있어야한다.

그러기 위해서는 상수 생성자가 있어야했는데 상수 생성자 선언을하지 않고 그냥 const 키워드를 붙여서 오류가 발생했
다.

 

 

발생한 경우 1:

class Person{
  final String? first;
  final String? last;

  static const Person SOMEONE = Person(); //Const variables must be initialized with a constant value.
  
  Person({ this.first='John', this.last='Doe'});
}

 

class Person{
  final String? first;  // 여기에 final 을 붙여준다.
  final String? last;   // 여기에 final 을 붙여준다.

  static const Person SOMEONE = Person();
  
  const Person({ this.first='John', this.last='Doe'}); // 여기에 const 를 붙여준다.
}

 

 

발생한 경우 2:

class ClassA {
  final Person person;
  ClassA({this.person = Person.SOMEONE});
}

class ClassB {
  final ClassA classA;
  ClassB({this.classA = const ClassA()}); // The default value of an optional parameter must be constant
}

 

 

class ClassA {
  final Person person;
  const ClassA({this.person = Person.SOMEONE}); // 여기에 const 를 붙여준다.
}

class ClassB {
  final ClassA classA;
  ClassB({this.classA = const ClassA()}); 
}

 

'til' 카테고리의 다른 글

newDay4 (stream)  (0) 2022.06.23
new Day3 (위젯 사이에 공간을 주는 방법들)  (0) 2022.06.13
new Day2 (BottomNavigationBar 사용법)  (0) 2022.06.10
new Day 1  (0) 2022.06.09
day26  (0) 2022.01.18