Что означает «_» перед именем переменной для Flutter - PullRequest
0 голосов
/ 04 ноября 2018

со ссылкой на учебник Flutter , я обнаружил подчеркивание, _.

Я знаю, что в Java _ используется как соглашение об именах для частной переменной.

  1. Это также относится к флаттеру? Отмечая, что в Flutter нет публичных / защищенных.
  2. Будет ли _ действительно закрытым (недоступным для других классов) или это просто соглашение об именах?

Variable

 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.
  ...
}

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Это не просто соглашение об именах. Подчеркнутые поля, классы и методы будут доступны только в файле .dart, где они определены.

Обычной практикой является сделать State реализацию виджета приватной, чтобы его можно было создать только с помощью соответствующего StatefulWidget:

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

class _MyPageState extends State<MyPage> {
  @override
  Widget build(BuildContext context) {
    return Container();
  }
}
0 голосов
/ 04 ноября 2018

Из Дартс

В отличие от Java, в Dart нет ключевых слов public, protected и частный. Если идентификатор начинается с подчеркивания (_), он является приватным в свою библиотеку. Подробнее см. Библиотеки и видимость .

...