Initiation automatique d'un StafulWidget

Bonjour à tous,

Après avoir initier un StatefulWidget sur Flutter, je me retrouve avec le petit bout de code en dessous.

2 petites questions :

A quoi sert ce bout de code qui n’est pas présent dans le cours ? :

const DiscoverView
  ({Key? key}) : super(key: key);

A quoi correspond l’information ci dessous ? :

 _DiscoverViewState createState() => _DiscoverViewState();
//Avoid using private types in public APIs.dartlibrary_private_types_in_public_api
}

Le bout de code complet :

import 'package:flutter/material.dart';

class DiscoverView extends StatefulWidget {
  const DiscoverView
  ({Key? key}) : super(key: key);

  @override
  _DiscoverViewState createState() => _DiscoverViewState();
//Avoid using private types in public APIs.dartlibrary_private_types_in_public_api
}

class _DiscoverViewState extends State<DiscoverView> {
  @override
  Widget build(BuildContext context) {
   return Container(); 
  }
}

Merci d’avance pour votre aide !

1 « J'aime »

Ce petit bout de code n’a pas été écrit par toi dans un état second, rassure-toi. Il vient manifestement d’une librairie. Comment as-tu fait, en détails, pour le copier ou le couper de son fichier d’origine ? Que fait-il dans ton code ? Ce n’est pas non plus un morceau d’une station orbitale retombée sur terre. Diantre.

C’est vrai que j’ai jamais chercher à creuser plus que ça l’interêt de ces informations, et je serais curieux de connaître la réponse également.
Merci d’avoir pris cette initiative @Tazooou

C’est quand tu utilises le raccourci stf pour StatefulWidget ou stl pour StatelessWidget, il est écrit directement.

Ces raccourcis te créent une classe avec le constructeur et t’a plus qu’a écrire le nom de ta class.
Exemple avec le StatefulWidget :
Capture d’écran 2022-08-09 à 18.21.21

C’est bien par là que je suis passé :smiley:

1 « J'aime »

Ah ben, voilà. Et c’est tout expliqué pile poil dans le cours de Maxime, comment la complétion automatique écrit pour toi du code qui crée l’état de ton widget, les moyens de le construire, c’est dans le cours sur Flutter (3e cours du chapitre 2.2). On a toujours besoin de relire le cours.

Désolé je n’ai pas accès aux cours personnellement, puis-je avoir une brève explication svp. :pray:t3:

Dans le cours, le constructeur n’utilise pas les paramètres key. La complétion automatique n’est pas la même. Il y a du avoir des changements entre temps.

Et pour le message sur le createState, il n’apparaît pas non plus dans le cours.

Ah mince d’accord @mbritto, aurais-tu quelques explications ?
Merci d’avance.

Salut, petit élément de réponse.

Depuis les cours de Maxime, Flutter a ajouté le passage de la key (permettant d’identifier le widget) dans le constructeur. Cette key est ensuite passée au parent du widget avec super(key: key).

@mbritto sera sans doute plus clair que moi.

Quant au createState, il me semble que c’est la mécanique de Flutter pour créer l’état du stateful widget.

Dans tous les cas, c’est un peu déroutant au début par rapport aux cours de Maxime mais cela ne change rien dans la manière d’utiliser le stateful widget.

Happy coding !

Quentin

2 « J'aime »

Merci pour ta réponse @Quentin !

Je me demande ce pendant, à quoi ça peut servir d’identifier notre Widget ?

Merci @Quentin. Je me suis pour l’instant arrêté au cours navigateur 2.0. Il va être temps de reprendre :slight_smile: et comprendre ce nouveau router avec le passage de key.

Pour le createState, c’est le message d’erreur qui me posait soucis :
« Avoid using private types in public APIs.dartlibrary_private_types_in_public_api »

C’est très clair Quentin, bien joué :+1:
Les keys sont utiles dans certains cas rares où le rafraîchissement pourrait confondre plusieurs widget du même type mais avec des infos différentes. Pas de soucis pour ne pas les utiliser sur vos widgets la plupart du temps.

Ce message me paraît plus étrange en revanche. Est-ce que tu crées une bibliothèque Dart (comme je l’ai montré en meetup le mois dernier) ?

1 « J'aime »

Non pas du tout. C’est vraiment à la génération du code au démarrage par la complétion automatique st

C’est juste un warning mais je voulais comprendre la potentielle amélioration à apporter