NativeScript: ToDo App – Botões e ações

Continuando o desenvolvimento do aplicativo com NativeScript, vou adicionar alguns elementos e funcionalidades.

Se você não leu ainda o primeiro post, dá uma lida NativeScript: ToDo App – Estrutura base.

Eu deixei o botão de adicionar itens na ActionBar no formato de pop-up, do lado direito, no menu de três pontos na vertical. Mas essa é uma opção é ideal para quando se tem uma lista de botões. Também dá para deixar o botão direto na ActionBar, nesse caso é só remover o atributo android.position=”popup” da tag ActionItem.

Outra opção é usar um floating button, geralmente visto em aplicativos android com material design e na posição inferior direta. O Alexander Ziskind tem uma série de vídeos ensinando a criar um componente para esse tipo de botão. Também tem o plugin NativeScript-FloatingActionButton e é ele que vou usar.

Para instalar o plugin

Para configurar é fácil, será necessário um imagem para o “+”, um estilo e o registro da tag do botão. Existe um site que gera imagens para aplicativos Android – também pode ser usado para iOS – chamado Android Asset Studio. As imagens devem ficar na pasta /app/App_Resources/[Android|iOS].

O estilo é para dar cor e tamanho do botão, que pode ficar no arquivo app.css ou em um css só para o componente que você quer usar:

O registro da tag do botão é feito antes do bootstrap do aplicativo, ou seja, no arquivo main.ts.

O primeiro parâmetro da função registerElement() é o nome da tag, nesse caso FAB, e pode ser trocado por outro nome.

No HTML do componente TodoListComponent, eu comentei a ActionItem e adicionei o botão no final chamando a mesma função addItem() da ActionItem. Uma dica é usar as tags condicionais de cada sistema operacional para mostrar a ActionItem só no iOS e o floating button só no Android.

Para verificar e atualizar o status da tarefa eu uso o widget switch, que é como um checkbox do HTML. No StackLayout que fica dentro do template da ListView, eu adicionei um atributo orientation=”horizontal” e adicionei o switch dentro. A propriedade checked, do switch, é preenchida com o item.isDone e no evento tap chamo a função updateStatus() passando o id do ToDo.

Veja como está ficando:

O código dessa parte do aplicativo está no github.