变量名称前的下划线“ _”对Flutter意味着什么

时间:2018-11-04 15:04:22

标签: flutter dart-sdk

在参考Flutter教程时,我遇到了下划线_

我知道在Java中,_被用作私有变量的命名约定。

  1. 它也适用于Flutter吗?注意Flutter中没有公共/受保护的对象。
  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?

小部件

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

2 个答案:

答案 0 :(得分:12)

Dart guide

  

与Java不同,Dart没有关键字public,protected和   私人的。如果标识符以下划线(_)开头,则为私有   到它的图书馆。有关详细信息,请参见Libraries and visibility

答案 1 :(得分:9)

这不仅仅是命名约定。下划线字段,类和方法仅在定义它们的.dart文件中可用。

通常的做法是将窗口小部件的State实现设为私有,以便只能由相应的StatefulWidget实例化它:

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

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