web-dev-qa-db-fra.com

Que signifie Underscore "_" avant nom de variable pour Flutter

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.

  1. Cela s'applique-t-il également à Flutter? Notant qu'il n'y a pas de public/protégé dans Flutter.
  2. Sera le _ ê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);
  ...
}
  1. Est-ce que le _ 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.
  ...
}
18
lonelearner

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();
  }
}
18
boformer

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

19
TheMri