본문 바로가기
Flutter/Flutter FAQ

Flutter 플러터에서 변수 이름 앞에 있는 밑줄 "_"은 무엇을 의미하는가?, What does Underscore "_" before variable name mean for Flutter

by 베타코드 2023. 6. 1.
반응형

질문


Flutter 튜토리얼과 관련하여 밑줄 _을 만났습니다.

Java에서 _은 private 변수의 명명 규칙으로 사용된다는 것을 알고 있습니다.

  1. Flutter에서도 적용되는가요? Flutter에는 public/protected가 없으므로 주의해야 합니다.
  2. _는 실제로 private(다른 클래스에서 접근할 수 없음)인가요 아니면 명명 규칙일 뿐인가요?

변수

class RandomWordsState extends State<RandomWords> {
  final List<WordPair> _suggestions = <WordPair>[];
  final Set<WordPair> _saved = new Set<WordPair>();
  final TextStyle _biggerFont = const TextStyle(fontSize: 18.0);
  ...
}
  1. _는 위젯도 private으로 만드나요? 이 경우, 메인 클래스는 위젯에 접근할 수 없지 않나요?

함수

Widget _buildRow(WordPair pair) {
  final bool alreadySaved = _saved.contains(pair);  // Add this line.
  ...
}

답변


이것은 단순한 명명 규칙이 아닙니다. 언더스코어 필드, 클래스 및 메서드는 정의된 .dart 파일에서만 사용 가능합니다.

State 위젯의 구현을 비공개로 만드는 것이 일반적인 관행입니다. 그래서 해당 StatefulWidget에서만 인스턴스화될 수 있습니다:

class MyPage extends StatefulWidget {
  @override
  _MyPageState createState() => _MyPageState();
}

class _MyPageState extends State<MyPage> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
반응형

댓글