Что означает "_" перед именем переменной для Flutter
Привет со ссылкой на учебник Flutter, я сталкиваюсь с подчеркиванием, "_"
Я знаю, что в Java _ используется как соглашение об именах для закрытой переменной.
1. Применимо ли это к Флаттеру? отмечая, что в 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);
...
}
- Это _ делает виджет приватным? В таком случае разве основной класс не сможет оценить Widget?
Виджет
Widget _buildRow(WordPair pair) {
final bool alreadySaved = _saved.contains(pair); // Add this line.
...
}
3 ответа
Это не просто соглашение об именах. Подчеркнутые поля, классы и методы будут доступны только в .dart
файл, где они определены.
Это обычная практика, чтобы сделать State
реализация виджета private, чтобы его можно было создать только с помощью соответствующего StatefulWidget
:
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
@override
Widget build(BuildContext context) {
return Container();
}
}
Из руководства Дартс
В отличие от Java, в Dart нет ключевых слов public, protected и private. Если идентификатор начинается с подчеркивания (_), он является частным для своей библиотеки. Для получения дополнительной информации см. Библиотеки и видимость.
Частные поля также имеют то преимущество, что Lint может определить, какие поля были объявлены/созданны, а не использованы, что помогает выявлять человеческие ошибки.
Если вы объявите общедоступное поле, в будущем к полю могут получить доступ классы вне класса, поэтому Lint не сможет предупредить вас, если вы добавили поле по ошибке.