Différence entre Stateless widget et Stateful widget

La différence est simple, elle réside dans le changement d’état.

Stateless widget signifie en anglais « sans état ». Cela veut dire que votre widget ne va pas changer dynamiquement au cours de son existence. 

Par exemple:

si vous cliquez sur un bouton qui est un Stateless widget, son apparence ne va pas changer lorsque vous cliquerez dessus. Pour résumer, vous allez pouvoir ordonner de faire quelque chose à chaque clic de l’utilisateur mais l’écran ne pourra pas s’actualiser et produire un changement.

EXEMPLE BOUTON QUI NE CHANGE PAS D’APPARENCE

Stateful widget signifie « avec état » ce qui veut dire que l’état de votre widget va être modifiable et qu’il va pouvoir changer dynamiquement. 

Par exemple: 

Si vous cliquez sur un bouton et qu’il change de couleur, vous êtes en présence d’un Stateful widget.

EXEMPLE BOUTON QUI CHANGE D’APPARENCE

POURQUOI UTILISER DES STATELESS WIDGET ALORS?

Les Stateless widgets sont moins gourmands en ressources et le meilleur développeur est celui qui utilise le moins de ressources nécessaires pour effectuer une tâche.

QUAND UTILISER LES STATELESS WIDGETS?

Vous devez les utiliser dès lors que votre application ne modifie pas votre UI (User Interface). Dès que vous pouvez éliminer la possibilité pour un widget de changer d’état, faites-le!

La notion de Stateless et Stateful widget se retrouve aussi dans les notions mutables et immutable (immuable).

MUTABLE ET IMMUTABLE

Il faut déjà faire la différence entre ce qui est mutable et immuable.

Immutable= Qui ne peut changer.

C’est par exemple les strings, int, bool que nous définissons dans nos applications.

Exemple: String abc = « abc »;

La valeur d’abc ne change pas, elle est immutable.

Mutable= Qui est sujet au changement.

Par exemple, si j’ai un string ou un int dont je veux que la valeur puisse changer dans mon application, je vais l’initialiser de la manière suivante:

String abc;

De cette manière, je ne lui ai pas donné de valeur définitive donc elle va pouvoir être modifiée par la suite. De manière simple, si je veux que cette valeur ait tout de même une valeur initiale lorsque mon application va se lancer, je vais initialiser sa valeur au sein de la méthode initState() comme ceci:

@override
void initState() {
    super.initState();
    abc=« abc »;
}

Laisser un commentaire