flutter + dart basics part 2

Flutter + Dart, les bases | 2

Hello ! Prêts pour la seconde partie de cette série sur Flutter ? Vous pouvez trouver la première partie des bases de Flutter et Dart juste ici.

Les classes en Dart

Les classes sont assez simples avec Dart et très similaires aux autres languages. On crée un plan pour un objet en donnant à une classe des propriétés et des méthodes.

Pour créer une classe dans Flutter, il faudra utiliser le mot clef « class » et donner un nom à sa classe (pour suivre la convention, la première lettre du nom sera une majuscule).

Puis on déclare les variables qu’on veut mettre dans cette classe, mais sans lui assigner de valeur. Pour finir, il faut créer une fonction spéciale qui s’appelle un constructeur, pour définir les valeurs des propriétés des objets (n’oubliez pas que nous créons seulement un moule, un plan pour créer nos objets). Il faudra passer les valeurs en arguments à l’instanciation de la classe et le constructeur assignera ces valeurs aux propriétés des objets qu’il crée.

Pour ce faire, il faut dire au constructeur que cette propriété de cette instance est égale à la propriété passée en paramètres: this.name=name;

Parfait, la classe est prête. Instancions là.

Dans la fonction main(), là où notre application tourne, on peut créer une instance de la classe Player et la stocker dans une variable. Le type de cette variable sera le nom de la classe, donc ici ce sera le type « Player ». Il faut passer les propriétés de l’instance en paramètres, pour que la classe puisse assigner la valeur à la propriété de chaque instance: Player(name, age, isStudent), dans l’ordre attendu, en respectant le type attendu. Souvenez-vous que dans notre classe, j’ai défini les propriétés comme ceci : name = String, age = integer et isStudent = boolean.

A ce stade, la classe est créée et instanciée deux fois. On peut accéder aux propriétés de l’objet Player en appelant instance.propriété; (par exemple ici, playerOne.name) et invoquer ses méthodes de la même manière: instance.méthode();

Les classes étendues

L’héritage avec Dart est très similaire à Javascript encore une fois. Une classe peut hériter d’une autre classe pour la spécialiser. Créons un SuperPlayer.

SuperPlayer hérite de la classe Player, donc il possède ses propriétés et ses méthodes, et il va ajouter ses propres propriétés et méthodes. Pour créer une classe étendue, il faut utiliser le mot clef « extended » et le nom de la classe parente.

Comme vous pouvez le voir, le constructeur est un peu différent. Il faut appeler « super » pour faire référence au constructeur de la classe parente et lui passer les valeurs des propriétés héritées. Ici, j’ai passé les valeurs de « name », « age » et « isStudent » à la classe parent « Player », et j’ai conservé la valeur de « winner » dans le constructeur de SuperPlayer car ce n’est pas une propriété héritée, mais une propriété spécifique de SuperPlayer. J’ai seulement assigné this.winner=winner car les autres propriétés sont assignées par le constructeur de la classe parent.

Stateless / Statefull / Inherited widget

Dans Flutter, il existe 3 types de widget. Si j’ai bien compris ce que j’ai lu sur le sujet :

  • un Stateless widget ne peut pas changer son état dans le temps, ses propriétés ne peuvent pas changer, il est immuable.
  • un Stateful widget peut se reconstruire lui-même et changer son état.
  • un Inherited widget définit un contexte pour contenir les données à la racine d’un sous-arbre, et peut propager les informations à chaque widget dans ce sous-arbre. Celui-ci me fait penser à un store comme Redux.

Dans ce fil de discussion très intéressant sur Stack Overflow, j’ai trouvé cette réponse au sujet de la différence entre stateless et stateful widget :

Dans Flutter, la différence est que les stateless widgets peuvent être définis uniquement par les arguments du constructeur. En fait, un stateful widget est lui-même immuable (sans état), mais Flutter gère un objet d’état séparé et l’associe au widget, comme expliqué dans la documentation StatefulWidget.

Il semble que la différence soit essentiellement entre « repaint » ou « rebuild » un widget :

Un StatelessWidget ne se reconstruira jamais par lui-même (mais peut l’être à partir d’événements externes). Un StatefulWidget peut se reconstruire lui-même. C’est règle d’or. MAIS tout type de widget peut être « repeint » à tout moment. Stateless signifie seulement que toutes ses propriétés sont immuables et que la seule façon de les changer est de créer une nouvelle instance de ce widget.

source : Stack Overflow

Continuez la lecture…

Dans le prochain épisode, je commencerais une application Flutter toute neuve pour le tester, restez connecté !

Nevae

Hello ! Je suis développeur IoT et UX designer junior. Vit en France, deux marmots, rat de bibliothèque, fille à chat, Flutter addict, bla bla bla. Les trucs habituels. Allez go, on parle de code !

One thought on “Flutter + Dart, les bases | 2

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

back to top