6
votes

Flutter - changer les variables à l'intérieur ou à l'extérieur de setState?

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.


1 commentaires

Cela ne fait aucune différence mais le 2ème rend l'intention plus claire. L'état de la bande _variable1 variable2 a été modifié dans le but de mettre à jour la vue.


4 Réponses :


1
votes

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.


0 commentaires

6
votes

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.


0 commentaires

4
votes

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.


0 commentaires

2
votes

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.


0 commentaires