en référence au Flutter tutoriel, j'ai rencontré un trait de soulignement, _
.
Je sais qu'en Java, _
est utilisé comme convention de dénomination pour une variable privée.
_
être vraiment privé (inaccessible par d’autres classes) ou s’agit-il simplement d’une convention de nommage?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);
...
}
_
rendre le widget privé aussi? Dans ce cas, la classe principale ne pourrait-elle pas évaluer le widget?Widget
Widget _buildRow(WordPair pair) {
final bool alreadySaved = _saved.contains(pair); // Add this line.
...
}
Ce n'est pas juste une convention de nommage. Les champs, les classes et les méthodes de soulignement ne seront disponibles que dans le .Dart
fichier où ils sont définis.
Il est de pratique courante de rendre privée l'implémentation State
d'un widget, de sorte qu'il ne puisse être instancié que par le StatefulWidget
correspondant:
class MyPage extends StatefulWidget {
@override
_MyPageState createState() => _MyPageState();
}
class _MyPageState extends State<MyPage> {
@override
Widget build(BuildContext context) {
return Container();
}
}
De la guide de fléchettes
Contrairement à Java, Dart n'a pas les mots-clés public, protected et private. Si un identifiant commence par un trait de soulignement (_), il est privé de sa bibliothèque. Pour plus de détails, voir Bibliothèques et visibilité .