在参考Flutter教程时,我遇到了下划线_
。
我知道在Java中,_
被用作私有变量的命名约定。
_
真的是私有的(其他类无法访问)还是仅仅是命名约定?变量
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);
...
}
_
是否也将小部件设为私有?在这种情况下,主类会不会无法评估Widget?小部件
Widget _buildRow(WordPair pair) {
final bool alreadySaved = _saved.contains(pair); // Add this line.
...
}
答案 0 :(得分:12)
与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();
}
}