Lorsque vous modifiez l'état dans un widget Flutter, y a-t-il des différences entre faire ceci
setState(() => {
_variable1 = true;
variable2 = 'abc';
});
ou ceci
_variable1 = true;
variable2 = 'abc';
setState(() => {});
Presque tous les les exemples dans la documentation utilisent le dernier, mais je n'ai pas remarqué de différences pratiques. Les variables sont définies et l'état est mis à jour dans les deux cas, mais je me demande s'il existe un scénario selon lequel quelque chose ne fonctionne pas comme prévu si vous utilisez l'un ou l'autre.
4 Réponses :
Non, le résultat sera identique dans les deux cas, je les ai utilisés tous les deux de manière interchangeable dans de nombreux widgets et le résultat était toujours le même.
D'après les docs de flutter, il est indiqué que: < / p>
En général, il est recommandé d'utiliser la méthode setState uniquement pour encapsuler les changements réels dans l'état, pas tout calcul qui pourrait être associé au changement.
Je pense principalement que c'est à des fins de lisibilité, c'est-à-dire que vous devez mettre dans le corps de setState ce qui change dans la nouvelle version du widget, sans mélanger cela avec vos calculs comme le la première méthode de votre question fait.
Déjà posté ici cette question.
C'est une convétion, cela n'a pas d'importance, mais c'est une bonne pratique d'envelopper tous les changements dans la fonction setState. Mais les résultats seront les mêmes dans les deux cas.
J'ai lu quelque part qu'un setState vide est une "odeur de code", car le corps du callback doit indiquer la raison du setState.
Cela ne fait aucune différence mais le 2ème rend l'intention plus claire. L'état de la bande
_variable1variable2a été modifié dans le but de mettre à jour la vue.