개발/dart&flutter

[dart] 밑줄(_) 변수를 생성자에서 파라미터로 받아서 초기화하는 법

로 얄 2024. 3. 8. 11:08
반응형

Dart에는 public, protected & private같은 키워드가 존재하지 않는다.

대신 식별자가 밑줄로 시작하면 라이브러리 전용 식별자가 된다.

사실 이 부분에 대해서 쓸려고 한 것은 아니기 때문에 해당 부분은  https://dart.dev/language/libraries 에서 확인하면 될 것 같다.

 

문제는 해당 방법을 사용한 식별자를 생성자에서 파라미터로 받아서 초기화 하려고 할 때 마주할 수 있다.

우선 아래의 샘플코드를 보자.

class Sample {
  final int _number;

  Sample(this._number);
}

 

이렇게 사용할 경우 아무런 문제가 되지 않는다. 다만

class Sample {
  final int? _number;

  Sample({this._number}); 
  // error Named parameters can't start with an underscore.
}

or 

class Sample {
  final int _number;

  Sample({required this._number});
  // error Named parameters can't start with an underscore.
}

 

에러 내용 그대로 밑줄 변수는 라이브러리 전용이기 때문에 파라미터로 사용할 수 없다. 

따라서 초기화에서 매핑을 지정해야 정상적으로 사용가능하며 아래와 같다.

 


class Sample {
  final int _number;

  Sample({required int number}) : _number = number;
}

 

 

반응형