下划线“ _”对Flutter的含义是什么

问题描述 投票:21回答:2

参考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

Widget _buildRow(WordPair pair) {
  final bool alreadySaved = _saved.contains(pair);  // Add this line.
  ...
}
flutter dart-sdk
2个回答
26
投票

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

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

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

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

21
投票

来自Dart guide

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

© www.soinside.com 2019 - 2024. All rights reserved.