web-dev-qa-db-fra.com

Variable Flutter avec mot clé const

Dans le didacticiel "Écrivez votre première application" sur les documents Flutter, étape 4 intitulée "Étape 4: créer une liste d'affichage à défilement infini", vous êtes invité à créer 2 variables à afficher ici:

class RandomWordsState extends State<RandomWords> {
  final _suggestions = <WordPair>[];

  final _biggerFont = const TextStyle(fontSize: 18.0);
  ...
}

Pourquoi le mot clé const est-il utilisé sur la 3e ligne? Je viens d'un arrière-plan C # et JavaScript et je n'ai pas l'habitude de voir cela sur le côté droit d'une déclaration d'affectation. Je remarque que si je le supprime, il fonctionne toujours comme prévu. Pourriez-vous s'il vous plaît expliquer en termes de lamens pourquoi cela est utilisé et quand dois-je faire de même? Je suppose que c'est exagéré et je n'ai pas à l'utiliser, mais je veux juste m'en assurer.

Je ne pense pas que ce soit un doublon, car la réponse dans cet article était parfaite pour expliquer ma question et ne se trouve pas dans l'autre article, sans parler de l'autre article est une question en deux parties que personne ne trouverait lors de l'utilisation de Google.

8
Helzgate

Du site d'actualités Dart:

"const" a une signification un peu plus complexe et subtile dans Dart. const modifie les valeurs . Vous pouvez l'utiliser lors de la création de collections, comme const [1, 2, 3], Et lors de la construction d'objets (au lieu de nouveaux) comme const Point(2, 3). Ici, const signifie que tout l'état profond de l'objet peut être déterminé entièrement au moment de la compilation et que l'objet sera figé et complètement immuable.

En savoir plus ici.

Dans mes mots, vous pouvez utiliser le constructeur const (constructeurs définis comme const) comme const Text() ou new Text().

Si vous utilisez const Text(): Cela n'allouera qu'un seul espace mémoire et lorsque vous ajoutez un autre const Text(), cela réutilisera le même objet mais la new Text() allouera toujours nouvel espace mémoire. Ainsi, en utilisant const, vous pouvez augmenter les performances de votre programme (pas autant de performances mais moins d'allocation de mémoire). En outre, vous pouvez définir vos constructeurs de classe comme const, s'il doit être réutilisé.

Je remarque que si je le supprime, il fonctionne toujours comme prévu.

C'est parce qu'avec Dart deux new et const mot-clé facultatif lorsque vous créez un objet/instance, cela sera géré par la machine virtuelle Dart. Au départ, il y avait quelques problèmes, mais ceux-ci sont résolus maintenant.

Même si vous évitez const/new ceux-ci seront ajoutés par le Dart VM . La raison pour laquelle ces deux mots clés sont facultatifs est dans Flutter, vous devez taper ces deux partout (ex: dans l'arborescence des widgets).

Amélioration de Dart two () 23 février

14
Blasanka

Voici une autre question avec quelques réponses qui pourraient vous aider.

Quel système de couleurs utilise Flutter et pourquoi utilisons-nous `const Color` au lieu de` new Color`

Comme expliqué par la réponse acceptée, les constructeurs const sont une petite optimisation. Dans Dart, un const MyObject (42) ne sera alloué qu'une seule fois, même lorsque vous l'appelez des centaines de fois. Ce qui signifie moins d'allocation de mémoire> plus rapide

3
Vyrotek

Const signifie que tout l'état profond de l'objet peut être entièrement déterminé au moment de la compilation et que l'objet sera figé et complètement immuable.

1
Sebastian