1. ホーム
  2. flutter

[解決済み] Flutterにおける変数名の前のアンダースコア"_"の意味するところ

2022-10-06 22:01:59

質問

を参考に Flutter のチュートリアルで、アンダースコアに遭遇しました。 _ .

Javaでは知っているのですが _ はプライベート変数の命名規則として使われます。

  1. Flutterにも適用されるのでしょうか?Flutterではpublic/protectedは存在しないことに注意しましょう。
  2. は適用されるのでしょうか? _ は本当にプライベート(他のクラスからアクセスできない)なのでしょうか?それとも単なる命名規則なのでしょうか?

変数

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. _ はWidgetもprivateにするのでしょうか?この場合、メインクラスはWidgetを評価することができないのでは?

機能

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();
  }
}