Apresentando o fireXtensions

Mudando a forma como você utiliza o Firebase no Android

Rosário Pereira Fernandes
GDG Maputo
Published in
4 min readSep 5, 2018

--

ATUALIZAÇÃO 29/09/2019: O fireXtensions foi descontinuado a favor das bibliotecas KTX oficiais do Firebase. Obrigado a todos que contribuiram, apoiaram ou utilizaram o fireXtensions.

18 de Maio de 2017 foi o dia em que a Google anunciou, durante o Google I/O, que Kotlin passa a ser (oficialmente) uma linguagem para desenvolvimento de aplicações Android. Isso porque:

Kotlin is expressive, concise, and powerful.
(Kotlin é expressivo, conciso e poderoso)

Essa foi uma das melhores novidades do I/O, pois esta linguagem traz várias funcionalidades que facilitam a vida dos desenvolvedores e de certa forma melhora a produtividade deles. Se você não conhece as funcionalidades da linguagem, recomendo que leia esta série de artigos do Paulo Enoque:

  1. Introdução a Kotlin
  2. Sintaxe básica do Kotlin
  3. Detalhes avançados sobre Kotlin
  4. Kotlin Android Extensions

Kotlin Extensions

Uma funcionalidade que, em particular, chamou a minha atenção foi Kotlin Extensions. Esta funcionalidade permite que você adicione novos métodos à classes que não são suas, sem ter de herdar (o famoso extends do java) dessa classe. Por exemplo: eu posso criar um método que verifica se uma String contém ponto de exclamação(!), algo como:

Mas para usar o método, eu tenho de chamar da seguinte forma: contemPontoExclamacao("Olá Mundo!"). Isso parece ok, mas imagine se eu tiver de chamar o método em várias classes — teria de declarar o método em todas elas ou declará-lo em uma só classe e definí-lo como estático. Ou até criar uma classe MinhaString que herda da classe String e implementa o método contemPontoExclamacao(). Depois teria de mudar o tipo de dado de todas as Strings do meu programa para que passasse a ser do tipoMinhaString.

Utilizando Kotlin Extensions, eu posso fazer com que este método faça parte da classe String:

E então posso chamá-lo em qualquer classe, sempre da mesma forma:

Como você pode ver, Kotlin simplifica o código que temos de escrever. Muitos desenvolvedores (a google inclusive) aproveitaram disso para desenvolver bibliotecas que tornam o desenvolvimento Android mais simples. Falo de bibliotecas como Android KTX, Anko, Nahu, entre outras.

FireXtensions

Foi inspirado nessas bibliotecas que decidi desenvolver o fireXtensions. fireXtensions é uma biblioteca que vem para simplificar a forma como nós (desenvolvedores) executamos operações no Firebase. Atualmente, a biblioteca suporta a Realtime Database e Cloud Firestore.

Por exemplo:
Para ler utilizadores da Realtime Database com Kotlin, você utilizaria o código:

Com fireXtensions:

Fica mais simples, não é?

Exemplo 2: Ler dados da cidade “Maputo que está na coleção “cidades” do Firestore:

Com fireXtensions:

Como fazer essa magia?

Utilizar o fireXtensions na sua aplicação é muito simples, basta seguir as instruções encontradas no site:

  1. Adicionar o maven do jitpack para o build.gradle do projecto:

2. Adicionar a dependência ao build.gradle da app. Aqui você tem 2 opções:

  • Adicionar as extensions para Realtime Database e Cloud Firestore:
  • Ou adicionar as extensions só para Realtime Database ou só para Cloud Firestore:

Conheça todas as extensions oferecidas pela biblioteca nos tutoriais:

Contribuir para a biblioteca

fireXtensions é open source (sob a MIT License) e você pode contribuir no GitHub. Abra um issue para sugerir uma alteração, pode ser uma nova funcionalidade ou correção de bugs. Se a sua alteração for aprovada, aí você poderá mandar um Pull Request para fazê-la ou esperar que alguém o faça.

Espero que esta biblioteca simplifique a forma como você escreve o seu código Android e que ajude-lhe a melhorar a sua produtividade. 🙂 Caso tenha alguma dúvida ou sugestão, deixe abaixo nos comentários. Se você estiver tentando usar o fireXtensions e teve um problema, abra um issue no GitHub explicando o que você fez e qual foi o erro que teve.

--

--

Rosário Pereira Fernandes
GDG Maputo

Firebase DevRel Engineer at Google … Views and Opinions are my own.