Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
6m 26s
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, vamos acompanhar suas explicações passo a passo, apontando os horários para que você possa assistir e codificar junto. Esta é uma ótima maneira de aprender como criar e personalizar um prompt de seleção em seus próprios aplicativos de console .NET .
À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.
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;Dim favoriteName As String
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(Of 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.
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çã".
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.
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.
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.
Tim menciona (5:43) que esta lição cobre 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 alternar múltiplos itens ativados e desativados 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.
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.
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á prompts de seleção múltipla em vídeos futuros, onde os usuários podem alternar múltiplas opções e, em seguida, pressionar Enter para confirmar.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy