Sélection d'éléments dans une liste - Spectre Console Series
Spectre Console est un puissant package NuGet for .NET qui permet aux développeurs de créer des applications de console interactives au lieu de programmes de texte statique. L'une de ses fonctionnalités les plus utiles est l'invite de sélection de la console Spectre, qui vous permet de présenter une liste d'options que l'utilisateur peut faire défiler et sélectionner directement à l'aide de son clavier. La saisie dans la console est ainsi plus fiable, plus conviviale et visuellement plus soignée que si les personnes devaient taper leurs réponses manuellement.
Dans sa vidéo "Sélectionner des éléments dans une liste - Spectre Console Series", Tim Corey montre exactement comment utiliser cette fonctionnalité. Dans cet article, nous suivrons ses explications étape par étape, en indiquant les horodatages pour que vous puissiez regarder et coder en même temps. Il s'agit d'un excellent moyen d'apprendre à créer et à personnaliser une invite de sélection dans vos propres applications de console .NET.
Introduction à la leçon
À 0:00, Tim explique que Spectre Console permet aux développeurs de transformer les applications de console C# en applications visuellement attrayantes et informatives. Sa série de vidéos couvre la bibliothèque en tranches de 10 minutes, avec un lien vers le code source dans la description.
Dans cette leçon (0:18), Tim explique comment demander à un utilisateur de choisir une option dans une liste, puis d'utiliser le clavier pour naviguer dans cette liste. Ce modèle de "demande et réponse" est l'épine dorsale de la création d'applications de console modernes et interactives. Il rappelle également aux téléspectateurs (0:27) de s'abonner à sa chaîne et de visiter iamtimcorey.com pour plus de ressources de formation.
Création d'une invite de sélection
À 0:34, Tim montre une liste de noms génériques qu'il utilise couramment dans ses applications. Il pourrait tout aussi bien s'agir d'une liste de fruits - pomme, banane, orange - si vous vouliez un exemple de "fruit préféré". Il crée une variable de type string pour contenir la réponse que l'utilisateur choisira :
string favoriteName;
string favoriteName;

Ensuite, à 0:57, Tim passe de l'invite de base abordée dans la leçon précédente à une fonction SelectionPrompt complète :
favoriteName = AnsiConsole.Prompt(
new SelectionPrompt<string>()
.Title("Which is your favorite placeholder name")
.AddChoices(names)
);
favoriteName = AnsiConsole.Prompt(
new SelectionPrompt<string>()
.Title("Which is your favorite placeholder name")
.AddChoices(names)
);
Il explique (1:13) que le SelectionPrompt nécessite un titre, qui dans son cas est "Which is your favorite placeholder name" Si l'on demandait un fruit préféré, on changerait le titre en conséquence en "Quel est votre fruit préféré"
Bien que vous puissiez décorer le texte (1:24) avec les styles de Spectre Console - en utilisant des couleurs bleues, vertes ou grises, par exemple - dans cette leçon, il se concentre sur l'invite de sélection elle-même.
À 1:39, Tim ajoute les choix (sa liste de noms) en appelant .AddChoices(). Ces choix peuvent être n'importe quoi : des fruits, des chiffres, des objets ou même les résultats d'une fonction de "recherche".
Enfin, à 1:55, Tim utilise la ligne de balisage de Spectre Console pour afficher l'élément choisi à l'utilisateur :
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");
Cette page utilise un balisage en ligne pour colorer la réponse sélectionnée en rouge, mais vous pouvez tout aussi bien utiliser du bleu ou du vert si le thème de votre console l'exige.
Exécution de l'invite de sélection
Tim enregistre et exécute le code à 2:34. La console affiche :
-
Une liste de noms ou de fruits.
-
Les touches fléchées permettent de se déplacer vers le haut et vers le bas (2:41).
- Appuyez sur Entrée pour sélectionner un élément.
Tim fait une démonstration de la sélection de "Sue Storm" (2:50). Une fois la touche Entrée enfoncée, la liste disparaît et la console affiche un message :
Your favorite name is Sue Storm.
Your favorite name is Sue Storm.
S'il s'agissait d'une liste de fruits, vous pourriez voir : "Votre fruit préféré est la banane" ou "Votre fruit préféré est la pomme"
Gérer les longues listes
Tim aborde ensuite un problème courant : les longues listes. À 3:13, il présente la propriété PageSize pour limiter les éléments visibles :
.PageSize(4)
.PageSize(4)
Il explique (3:19) que le chiffre quatre est volontairement petit pour démontrer la fonctionnalité. Le nombre d'éléments affichés en même temps est limité. Si vous avez une grande liste de fruits - pomme, banane, orange, mangue, ananas - la taille de la page empêche la console de défiler sans fin.
Pour guider les utilisateurs, Tim ajoute un message MoreChoicesText en gris à 3:34 :
.MoreChoicesText("[grey](Move down to reveal more choices)[/]")
.MoreChoicesText("[grey](Move down to reveal more choices)[/]")
Ce texte indique à l'utilisateur qu'il peut se déplacer vers le bas pour découvrir d'autres choix. Ceci est particulièrement utile lorsque la taille de votre liste est importante et que vous souhaitez une indication claire au lieu de risquer une erreur ou une confusion.
Démonstration du comportement de la liste longue
Tim exécute à nouveau le programme à 4:08 :
-
Seules quatre options apparaissent initialement.
-
Le message en gris indique "Déplacez-vous vers le bas pour découvrir d'autres choix" (4:13).
-
Le défilement vers le bas permet de découvrir d'autres éléments.
- Le défilement vers le haut montre à nouveau les premiers (4:20).
Tim note (4:25) que cette méthode est idéale pour les grandes listes - pas de défilement interminable de la console. Vous pouvez en afficher 10 ou 15 à la fois et laisser l'utilisateur parcourir le reste. Cela résout le problème de la surcharge de la console avec trop de résultats à la fois.
Pourquoi l'invite de sélection est meilleure que la saisie
À 4:38, Tim explique pourquoi l'invite de sélection est meilleure que la saisie :
-
Une fois que vous avez fait votre choix, la liste disparaît (4:41).
- Vous voyez immédiatement la réponse que vous avez choisie (4:45).
Il compare cela (5:05) aux anciennes invites où les utilisateurs devaient taper "oui" ou "non" Avec SelectionPrompt, vous pouvez proposer ces choix directement et laisser les utilisateurs sélectionner à l'aide des touches fléchées, ce qui réduit les erreurs et rend l'expérience plus fluide.
Tim déclare (5:35) que l'invite est un "ajout vraiment cool" parce qu'elle simplifie la saisie, rend les applications de console plus interactives et fournit une solution claire aux problèmes de saisie.
Autres utilisations et sujets futurs
Tim mentionne (5:43) que cette leçon porte sur la sélection d'un élément dans une liste. Dans les prochaines vidéos, il montrera des invites de sélection multiples (5:39) où les utilisateurs peuvent activer ou désactiver plusieurs éléments, puis appuyer sur Entrée pour confirmer.
Il note également (5:47) que la liste peut être constituée de n'importe quel type d'objet - chaînes de caractères, entiers, fruits, et même d'options par défaut renvoyées par une fonction. Par exemple, vous pourriez demander à l'utilisateur son fruit préféré ("pomme", "banane", "orange") au lieu d'un nom (5:55).
Avec l'invite de sélection de Spectre Console, vous pouvez même définir des valeurs par défaut, gérer les réponses obligatoires et personnaliser l'action entreprise après une sélection.
Conclusion
Tim conclut (6:01) sa vidéo en réaffirmant que c'est ainsi que vous mettez en œuvre la sélection d'éléments dans la console Spectre - une manière propre et conviviale de gérer les listes dans les applications de console. Que vous demandiez un fruit préféré, un nombre ou un objet, l'invite de sélection donne à votre application une expérience soignée, sans saisie supplémentaire ni erreur.
Principaux enseignements de la vidéo de Tim Corey
-
Le SelectionPrompt de Spectre Console permet aux utilisateurs de naviguer dans les listes à l'aide de touches fléchées au lieu de saisir les données manuellement.
-
Personnalisez avec Titre, Choix, Couleurs (bleu, vert, gris), Taille de la page, et MoreChoicesText pour aider à révéler plus d'options.
-
Une fois qu'un élément est sélectionné, la liste disparaît et la réponse choisie s'affiche.
-
Idéal pour les listes courtes et longues, afin d'éviter les problèmes de défilement de la console.
-
Fonctionne avec n'importe quel type de données (chaînes, nombres, fruits comme la pomme, la banane, l'orange ou des objets personnalisés).
- Tim abordera dans ses prochaines vidéos les invites de sélection multiples, qui permettent aux utilisateurs d'alterner entre plusieurs options et d'appuyer sur la touche Entrée pour confirmer.
