IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

tails

[Dart] Déclarer un paramètre de type callback, avec les types.

Noter ce billet
par , 05/07/2021 à 10h08 (2403 Affichages)
Ce billet se base sur la version 2.13.3 du langage Dart.

Le langage Dart étant un langage de typage statique, il serait bien dommage de ne pas en profiter pour l'ensemble des signatures de fonction que l'on utilise.

Cependant, lorsque l'on a besoin de déclarer un callback (en variable d'instance de classe par exemple), la tâche n'est pas forcément simple. Si bien que souvent l'on écrit simplement :

Evidemment, avec cette fonction, rien ne nous interdit de passer un paramètre, de retourner un type différent de celui attendu ...

Admettons par exemple que la fonction onReady, si l'on s'en réfère à la déclaration classique, soit la suivante (En ne prêtant guère attention aux nombreuses mauvaises pratiques de celles-ci, telle que l'utilisation d'entier au lieu d'une énumération. C'est juste pour illustrer rapidement le concept dont je veux vous parler.) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
bool onReady(int eventType) {
  if (eventType == 3) return false;
  return true;
}
Si l'on se contente de la déclaration précédente, rien ne nous interdit d'ommettre le paramètre attendu eventType, ou de passer un 2e paramètre.

En fait on peut déclarer la signature de la fonction onReady de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
bool Function(int eventType) statusHandler;
Voici un example complet d'utilisation :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
bool Function(int eventType) statusHandlerbool onReady(int eventType) {
  if (eventType == 3) return false;
  return true;
}

void printStatus(bool Function(int eventType) statusHandler, int eventType) {
  print(statusHandler(eventType));
}

void main () {
  printStatus(onReady, 3);
}
Et cela fonctionne aussi avec la fonctionnalité null-safety (la fonctionnalité de Dart qui vérifie si un type de variable peut ou non accepter la valeur null):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
final void Function(int index)? handleHistoryItemRequested;
Ainsi j'ai pu utiliser cette fonction en paramètre de constructeur dans un Widget Flutter d'un projet personnel.
On constate donc que cette fonction peut prendre une valeur concrête, aussi bien que prendre null (grâce au point interrogation suivant la parenthèse de fermeture). Et cela fonctionne aussi pour les paramètres de la fonction, ainsi que le type de retour.

Voilà, j'espère que vous aurez pris plaisir à lire ce billet

Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Viadeo Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Twitter Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Google Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Facebook Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Digg Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Delicious Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog MySpace Envoyer le billet « [Dart] Déclarer un paramètre de type callback, avec les types. » dans le blog Yahoo

Tags: callback, dart
Catégories
Développement Web

Commentaires