Selecionando itens de uma lista - Série de consoles Spectre
O Spectre Console é um poderoso pacote NuGet for .NET que permite aos desenvolvedores criar aplicativos de console interativos em vez de programas de texto estáticos e simples. Uma de suas funcionalidades mais úteis é o Prompt de Seleção do Console Spectre, que permite apresentar uma lista de opções que o usuário pode percorrer e selecionar diretamente com o teclado. Isso torna a entrada de dados pelo console mais confiável, fácil de usar e visualmente mais refinada em comparação com a digitação manual das respostas.
Em seu vídeo " Selecionando itens de uma lista – Série Spectre Console ", Tim Corey mostra exatamente como usar esse recurso. Neste artigo, acompanharemos suas explicações passo a passo, indicando os momentos específicos para que você possa assistir e programar junto. Esta é uma ótima maneira de aprender como criar e personalizar um prompt de seleção em seus próprios aplicativos de console .NET .
Introdução à aula
Às 0:00, Tim explica que o Spectre Console permite que os desenvolvedores transformem aplicativos de console C# em aplicativos visualmente atraentes e informativos. Sua série de vídeos aborda a biblioteca em blocos de 10 minutos, com o código-fonte disponível na descrição.
Nesta lição (0:18), Tim se concentra em como pedir ao usuário que escolha uma opção de uma lista e, em seguida, usar o teclado para navegar por essa lista. Esse padrão de "perguntar e responder" é a base para a criação de aplicativos de console com aparência moderna e interativa. Ele também lembra os espectadores (0:27) de se inscreverem em seu canal e visitarem iamtimcorey.com para obter mais recursos de treinamento.
Criando uma opção de seleção
Aos 0:34, Tim mostra uma lista de nomes de espaços reservados que ele usa com frequência em seus aplicativos. Isso poderia ser facilmente uma lista de frutas — maçã, banana, laranja — se você quisesse um exemplo de "fruta favorita". Ele cria uma variável do tipo string para armazenar a resposta que o usuário escolherá:
string favoriteName;
string favoriteName;

Em seguida, aos 0:57, Tim passa do prompt básico abordado na lição anterior para uma função SelectionPrompt completa:
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)
);
Ele explica (1:13) que o SelectionPrompt requer um título, que no caso dele é "Qual é o seu nome de espaço reservado favorito". Se você estivesse perguntando sobre uma fruta favorita, você mudaria o título de acordo para "Qual é a sua fruta favorita".
Embora você possa decorar o texto (1:24) com os estilos do Spectre Console — usando cores azul, verde ou cinza, por exemplo — nesta lição ele está se concentrando no próprio prompt de seleção.
Às 1:39, Tim adiciona as opções — sua lista de nomes — chamando .AddChoices(). Essas opções podem ser qualquer coisa: frutas, números, objetos ou até mesmo os resultados de uma função de "busca".
Finalmente, em 1:55, Tim usa a linha de marcação do Spectre Console para exibir o item escolhido de volta para o usuário:
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");
AnsiConsole.MarkupLine($"Your favorite name is [red]{favoriteName}[/].");
Este código utiliza marcação embutida para colorir a resposta selecionada em vermelho, mas você poderia usar azul ou verde com a mesma facilidade, caso o tema do seu console exija.
Executando o prompt de seleção
Tim salva e executa o código às 2:34. O console exibe:
-
Uma lista de nomes ou frutas.
-
As teclas de seta permitem mover para cima e para baixo (2:41).
- Pressione Enter para selecionar um item.
Tim demonstra como selecionar "Sue Storm" (2:50). Assim que a tecla Enter for pressionada, a lista desaparecerá e o console exibirá a seguinte mensagem:
Your favorite name is Sue Storm.
Your favorite name is Sue Storm.
Se fosse uma lista de frutas, você poderia ver: "Sua fruta favorita é banana" ou "Sua fruta favorita é maçã".
Lidando com listas extensas
Tim então aborda um problema comum: listas longas. Aos 3:13, ele apresenta a propriedade PageSize para limitar os itens visíveis:
.PageSize(4)
.PageSize(4)
Ele explica (3:19) que quatro é intencionalmente pequeno para demonstrar a característica. Apenas essa quantidade de itens é exibida por vez. Se você tiver uma lista extensa de frutas — maçã, banana, laranja, manga, abacaxi — o PageSize impede que o console role indefinidamente.
Para orientar os usuários, Tim adiciona uma mensagem MoreChoicesText em cinza às 3:34:
.MoreChoicesText("[grey](Move down to reveal more choices)[/]")
.MoreChoicesText("[grey](Move down to reveal more choices)[/]")
Este texto informa ao usuário que ele pode rolar para baixo para revelar mais opções. Isso é especialmente útil quando sua lista é grande e você deseja uma dica clara em vez de correr o risco de cometer um erro ou causar confusão.
Demonstrando o comportamento de lista longa
Tim executa o programa novamente às 4:08:
-
Inicialmente, apenas quatro opções são exibidas.
-
A mensagem cinza diz "Deslize para baixo para revelar mais opções" (4:13).
-
Deslizar para baixo revela itens adicionais.
- Ao rolar para cima novamente, os primeiros aparecem (4:20).
Tim observa (4:25) que isso é ideal para listas grandes — sem rolagem infinita no console. Você pode exibir 10 ou 15 itens por vez e deixar o usuário navegar pelas páginas restantes. Isso resolve o problema de sobrecarregar o console com muita informação de uma só vez.
Por que o prompt de seleção é melhor do que digitar
Aos 4:38, Tim destaca por que o recurso de seleção é melhor do que digitar:
-
Assim que você fizer uma escolha, a lista desaparece (4:41).
- Você vê imediatamente a resposta escolhida (4:45).
Ele compara isso (5:05) aos antigos prompts em que os usuários tinham que digitar "sim" ou "não". Com o SelectionPrompt, você pode oferecer essas opções diretamente e permitir que os usuários selecionem com as teclas de seta, reduzindo erros e tornando a experiência mais fluida.
Tim diz (5:35) que o prompt é um "acréscimo muito legal" porque simplifica a entrada de dados, torna os aplicativos de console mais interativos e fornece uma solução clara para problemas de entrada.
Outros usos e tópicos futuros
Tim menciona (5:43) que esta lição aborda a seleção de um item de uma lista. Em vídeos futuros, ele mostrará prompts de seleção múltipla (5:39) onde os usuários podem ativar e desativar vários itens e, em seguida, pressionar Enter para confirmar.
Ele também observa (5:47) que a lista pode ser de qualquer tipo de objeto - strings, inteiros, frutas, até mesmo opções padrão retornadas de uma função. Por exemplo, você poderia perguntar ao usuário qual é sua fruta favorita ("maçã", "banana", "laranja") em vez de um nome (5:55).
Com o recurso de seleção do Spectre Console, você pode até mesmo definir valores padrão, lidar com respostas obrigatórias e personalizar a ação executada após uma seleção.
Conclusão
Tim conclui (6:01) seu vídeo reafirmando que esta é a maneira de implementar a seleção de itens no Spectre Console - uma forma limpa e fácil de usar para lidar com listas em aplicativos de console. Seja para pedir sua fruta favorita, um número ou um objeto, o recurso de seleção automática proporciona uma experiência refinada ao seu aplicativo, sem necessidade de digitação adicional ou erros.
Principais conclusões do vídeo de Tim Corey
-
O SelectionPrompt do Spectre Console permite que os usuários naveguem pelas listas usando as teclas de seta em vez de digitar manualmente.
-
Personalize com Título, Opções, Cores (azul, verde, cinza), Tamanho da Página e Texto de Mais Opções para ajudar a revelar mais opções.
-
Assim que um item é selecionado, a lista desaparece e a resposta escolhida é exibida.
-
Ideal para listas curtas e longas, evitando problemas de rolagem no console.
-
Funciona com qualquer tipo de dado (string, números, frutas como maçã, banana, laranja ou objetos personalizados).
- Tim abordará os prompts de seleção múltipla em vídeos futuros, onde os usuários podem alternar entre várias opções e pressionar Enter para confirmar.
