Resumo do Capítulo 6. Cliques no botão

Baixar exemplo Baixar o exemplo

Observação

Este livro foi publicado na primavera de 2016, e não foi atualizado desde então. Há muito no livro que permanece valioso, mas parte do material está desatualizado, e alguns tópicos não estão mais totalmente corretos ou completos.

O Button é o modo de exibição que permite que o usuário inicie um comando. Um Button é identificado por texto (e, opcionalmente, uma imagem, conforme demonstrado no Capítulo 13, Bitmaps). Consequentemente, Button define muitas das mesmas propriedades que Label:

Button também define três propriedades que regem a aparência de sua borda, mas o suporte dessas propriedades e sua independência mútua é específico da plataforma:

Button também herda todas as propriedades de VisualElement e View, incluindo BackgroundColor, HorizontalOptionse VerticalOptions.

Processando o clique

A Button classe define um Clicked evento que é acionado quando o usuário toca no Button. O Click manipulador é do tipo EventHandler. O primeiro argumento é o Button objeto que gera o evento; o segundo argumento é um EventArgs objeto que não fornece informações adicionais.

O exemplo ButtonLogger demonstra o tratamento simples Clicked .

Cliques do botão Compartilhamento

Várias Button exibições podem compartilhar o mesmo Clicked manipulador, mas o manipulador geralmente precisa determinar qual Button é o responsável por um evento específico. Uma abordagem é armazenar os vários Button objetos como campos e marcar qual deles está disparando o evento no manipulador.

O exemplo TwoButtons demonstra essa técnica. O programa também demonstra como definir a IsEnabled propriedade de um Button como false quando pressionar o Button não é mais válido. Um desabilitado Button não gera um Clicked evento.

Manipuladores de eventos anônimos

É possível definir Clicked manipuladores como funções lambda anônimas, como demonstra o exemplo ButtonLambdas . No entanto, manipuladores anônimos não podem ser compartilhados sem algum código de reflexão confuso.

Distinguindo exibições com IDs

Vários Button objetos também podem ser diferenciados definindo a StyleId propriedade ou AutomationId a propriedade como um string. Essa propriedade é definida por Element , mas não é usada em Xamarin.Forms. Ele destina-se a ser usado exclusivamente por programas de aplicativo.

O exemplo SimplestKeypad usa o mesmo manipulador de eventos para todas as 10 teclas numéricas em um teclado numérico e distingue-as com a StyleId propriedade :

Captura de tela tripla da Calculadora de teclado mais simples

Salvando dados transitórios

Muitos aplicativos precisam salvar dados quando um programa é encerrado e recarregar esses dados quando o programa é iniciado novamente. A Application classe define vários membros que ajudam seu programa a salvar e restaurar dados transitórios:

  • A Properties propriedade é um dicionário com string chaves e object itens. O conteúdo do dicionário é salvo automaticamente no armazenamento local do aplicativo antes do encerramento do programa e recarregado quando o programa é iniciado.
  • A Application classe define três métodos virtuais protegidos que a classe padrão App do programa substitui: OnStart, OnSleepe OnResume. Eles se referem a eventos de ciclo de vida do aplicativo .
  • O SavePropertiesAsync método salva o conteúdo do dicionário.

Não é necessário chamar SavePropertiesAsync. O conteúdo do dicionário é salvo automaticamente antes do encerramento do programa e recuperado antes da inicialização do programa. Ele é útil durante o teste de programa para salvar dados se o programa falhar.

Também é útil:

  • Application.Current, uma propriedade estática que retorna o objeto atual Application que você pode usar para obter o Properties dicionário.

A primeira etapa é identificar todas as variáveis na página que você deseja persistir quando o programa for encerrado. Se você souber todos os locais em que essas variáveis mudam, basta adicioná-las ao Properties dicionário nesse ponto. No construtor da página, você pode definir as variáveis do Properties dicionário se a chave existir.

Um programa maior provavelmente precisará lidar com eventos de ciclo de vida do aplicativo. O mais importante é o OnSleep método . Uma chamada para esse método indica que o programa deixou o primeiro plano. Talvez o usuário tenha pressionado o botão Página Inicial no dispositivo ou exibido todos os aplicativos ou esteja desligando o telefone. Uma chamada para OnSleep é a única notificação que um programa recebe antes de ser encerrado. O programa deve aproveitar essa oportunidade para garantir que o Properties dicionário esteja atualizado.

Uma chamada para OnResume indica que o programa não terminou após a última chamada para OnSleep , mas agora está em execução em primeiro plano novamente. O programa pode usar essa oportunidade para atualizar as conexões com a Internet (por exemplo).

Uma chamada para ocorre durante a OnStart inicialização do programa. Não é necessário aguardar até que esse método chame para acessar o Properties dicionário porque o conteúdo já foi restaurado quando o App construtor é chamado.

O exemplo PersistentKeypad é muito semelhante ao SimplestKeypad , exceto pelo fato de que o programa usa a OnSleep substituição para salvar a entrada atual do teclado e o construtor de página para restaurar esses dados.

Observação

Outra abordagem para salvar as configurações do programa é fornecida pela Xamarin.Essentials classe Preferências.