Ir para o conteúdo do rodapé
Iron Academy Logo
Aplicação C#
Aplicação C#

Outras categorias

Listas de seleção múltipla com agrupamentos - Série Spectre Console

Tim Corey
6m 21s

O Spectre Console é uma biblioteca .NET que permite transformar aplicativos de console C# simples em ferramentas interativas e visualmente ricas. Em vez de telas estáticas em preto e branco, você pode apresentar aos usuários cores, layouts e opções interativas. Neste artigo, vamos explorar um dos seus recursos de entrada mais poderosos — os prompts de múltipla seleção — e, especificamente, como usar grupos de opções.

Faremos isso seguindo o passo a passo de Tim Corey em seu vídeo " Listas de seleção múltipla com agrupamentos – Série Spectre Console ". Tim explica, mostra o código e o executa, para que você possa ver como implementá-lo em seu próprio projeto. Abaixo, cada título indica o momento aproximado no vídeo em que o respectivo tópico aparece, para que você possa ir diretamente a ele.

Introdução ao prompt de múltipla seleção

No início do vídeo, Tim Corey lembra aos espectadores que o Spectre Console permite "transformar seus aplicativos de console C# em aplicativos visualmente atraentes e informativos" (0:02). Sua série explora a biblioteca parte por parte em segmentos de dez minutos. Este vídeo em particular foca-se em pedir ao utilizador para escolher uma ou mais opções de uma lista ou de várias listas utilizando o recurso de seleção múltipla (0:18).

Configurando um prompt de múltipla seleção simples

Tim começa mostrando duas listas que ele já tem em seu código:

List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};
List<string> usualNames = new() {
    "Tim Corey",
    "Sue Storm",
    "Bilbo Baggins",
    "John Doe",
    "Princess Donut",
    "Steve Rogers"
};

List<string> familyNames = new() {
    "Charity",
    "Jon",
    "Chris"
};

(You can see these on screen at about 0:38.)

Ele cria uma lista. chamado favoriteNames porque o usuário pode selecionar zero, um ou vários itens (0:53–1:01). Em seguida, ele o atribui ao resultado de um AnsiConsole.Prompt com um novo MultiSelectionPrompt. () (1:05–1:16).

Tim enfatiza que cada escolha será um objeto de string e o prompt retornará uma matriz ou lista das escolhas selecionadas pelo usuário (1:20–1:26).

Em seguida, ele adiciona um título personalizado para orientar o usuário:

.Title("Which are your favorite placeholder names?")
.Title("Which are your favorite placeholder names?")

Isso estabelece um cabeçalho claro na parte superior do prompt (1:31–1:50).

Adicionando texto de instruções para orientação do usuário

Tim não se contenta apenas com um título. Ele também adiciona um texto de instruções para dizer ao usuário como interagir com o prompt (1:50).

Ele escreve algo como:

.InstructionsText("(Press <space> to toggle, <enter> to accept)")
.InstructionsText("(Press <space> to toggle, <enter> to accept)")

Aos 1:56, ele explica que você pode até formatá-lo com cores ou outros estilos — o Spectre Console permite personalizar a cor de destaque para que suas instruções apareçam em verde, azul, amarelo, cinza ou vermelho para ressaltar as partes principais.

O importante é dizer ao usuário: pressione a barra de espaço para alternar os itens, pressione Enter para aceitar sua resposta (2:12). Isso torna o script fácil de usar para o usuário.

Adicionando opções e exibindo os resultados

Em seguida, Tim adiciona os dados reais. Inicialmente ele mantém simples com uma lista. Ele usa .AddChoices(usualNames) (2:24–2:34).

Em seguida, ele escreve um loop foreach simples para exibir as seleções do usuário de volta no console (2:38–2:52):

foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}
foreach (var name in favoriteNames)
{
    Console.WriteLine(name);
}

Ele não está se preocupando com a formatação — apenas mostrando que o recurso de seleção múltipla funciona (2:53–3:00).

Tim executa o programa no terminal (3:00). O prompt mostra a lista de nomes dele. Ele usa a barra de espaço para selecionar alguns itens — como "Tim Corey" e "Sue Storm" — depois pressiona Enter, e o console exibe as opções escolhidas (3:07–3:15). Isto demonstra a versão funcional mais simples.

Spectre Console Multi Select Lists Groupings 1 related to Adicionando opções e exibindo os resultados

Migrando para listas múltiplas com grupos de escolha

Com a configuração básica funcionando, Tim torna as coisas "um pouco mais interessantes" (3:22). Em vez de apenas uma lista, ele tem duas listas: usualNames e familyNames.

Ele comenta a chamada original .AddChoices() e introduz .AddChoiceGroup() (3:32–3:38). Isso permite que ele agrupe itens relacionados sob uma etiqueta. Ele escreve:

.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)
.AddChoiceGroup("The usual names", usualNames)
.AddChoiceGroup("Family names", familyNames)

Agora, cada grupo aparecerá separadamente no prompt. Essa estrutura é especialmente útil quando você está apresentando dezenas de opções e deseja organizá-las em páginas ou grupos. Embora a transcrição não mostre isso, o prompt de seleção múltipla do Spectre Console também possui uma propriedade PageSize, que permite controlar quantos itens são exibidos simultaneamente quando há mais opções do que cabem em uma tela.

Como a seleção de grupo funciona em tempo de execução

Tim salva e executa o código novamente (4:11). O novo prompt mostra ambos os grupos com rótulos claros. Se ele mover o cursor para o rótulo "Os nomes usuais" e pressionar a barra de espaço, todos os itens desse grupo serão selecionados de uma só vez (4:17–4:19).

Ele também destaca que o Spectre Console lida automaticamente com a rolagem se a lista for maior que a tela — você verá uma mensagem em cinza "mova para cima e para baixo para revelar mais opções" (4:25–4:31). Esse é o comportamento padrão para listas com rolagem.

Tim demonstra como navegar até os nomes de família, selecioná-los e, em seguida, selecionar também um indivíduo como Sue Storm (4:39–4:43). Quando ele pressiona Enter, o console imprime todos os nomes escolhidos combinados (4:45). Isso mostra como a função exibe mais opções, permite alterná-las e, em seguida, retorna uma única lista de objetos selecionados.

Spectre Console Multi Select Lists Groupings 2 related to Como a seleção de grupo funciona em tempo de execução

Entendendo a diferença entre o prompt de múltipla escolha e o prompt de seleção.

Às 5h, Tim resume o que foi mostrado. O prompt de seleção múltipla funciona como o prompt de seleção normal, mas retorna uma lista de qualquer tipo que você passar (5:03–5:08).

Você pode adicionar texto de instrução como ele fez, e pode usar grupos de escolha para organizar e, opcionalmente, selecionar grupos inteiros com uma única tecla (5:14–5:18). Isso torna os menus grandes ou complexos muito mais fáceis de gerenciar para o usuário.

Isso também indica a capacidade do Spectre Console de trabalhar com objetos complexos: o objeto escolhido pode ser mais do que uma simples string. Você pode fornecer um objeto com uma propriedade ChoiceLabel para controlar o que é exibido, recebendo ainda o objeto completo de volta quando o usuário aceita sua resposta.

Uso flexível de grupos de escolha e rótulos

Tim também esclarece que você não precisa ter dois grupos para usar .AddChoiceGroup() (5:20–5:24). Mesmo com um único grupo, você ainda tem a vantagem de poder selecionar o grupo inteiro de uma só vez.

Ele mostra que você pode nomear o grupo com algo como "Selecionar tudo" para ser mais genérico (5:34–5:42). Selecionar essa entrada superior ativaria ou desativaria todos os itens abaixo (5:44–5:47). Você também pode usar o realce por cores — por exemplo, tornando o rótulo do grupo verde ou azul para diferenciá-lo — para guiar o usuário até o grupo padrão ou necessário. Isso oferece muita flexibilidade na estruturação dos seus prompts.

Concluindo

Tim encerra o vídeo resumindo: é assim que se criam prompts de múltipla seleção com o Spectre Console, incluindo a adição de grupos de opções para seleção agrupada (5:50–5:53). Como sempre, o código-fonte está na descrição (5:57).

Principais conclusões do guia de Tim Corey

  • A seleção múltipla do Spectre Console permite que os usuários escolham zero, um ou vários itens de uma lista.

  • Adicione um título e um texto de instruções para orientar os usuários; Você pode usar cores de destaque para ressaltar as informações necessárias.

  • Use .AddChoices() para uma lista simples; use .AddChoiceGroup() para listas múltiplas ou agrupadas.

  • Os usuários pressionam a barra de espaço para alternar as seleções e a tecla Enter para confirmar.

  • Os próprios rótulos de grupo podem ser ativados/desativados para selecionar todos os itens de uma só vez.

  • O prompt pode exibir objetos complexos com uma propriedade ChoiceLabel, retornando o objeto subjacente.

  • O tamanho da página e a rolagem ajudam quando você tem mais opções do que cabem em uma única página.

Seguindo o exemplo de Tim Corey — com suas listas reais de nomes comuns e sobrenomes — você pode implementar rapidamente listas de seleção múltipla claras e fáceis de usar em seus próprios aplicativos do Spectre Console.

Hero Worlddot related to Listas de seleção múltipla com agrupamentos - Série Spectre Console
Hero Affiliate related to Listas de seleção múltipla com agrupamentos - Série Spectre Console

Ganhe mais compartilhando o que você ama.

Você cria conteúdo para desenvolvedores que trabalham com .NET, C#, Java, Python ou Node.js? Transforme sua expertise em renda extra!

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim