变量名之前的Underscore"_"对于Flutter意味着什么

lon*_*ner 22 dart-sdk flutter

参考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);
  ...
}
Run Code Online (Sandbox Code Playgroud)
  1. 是否将_Widget设为私有?在这种情况下,主类不会无法评估Widget吗?

窗口小部件

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

bof*_*mer 27

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

通常State将小部件的实现设为私有,以便只能由相应的小部件实例化StatefulWidget

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

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


小智 21

来自Dart指南

与Java不同,Dart没有关键字public,protected和private.如果标识符以下划线(_)开头,则它对其库是私有的.有关详细信息,请参阅库和可见性.