Serviços de desenvolvimento de apps em Flutter
Construímos apps multiplataforma em Flutter. Uma base de código é publicada em iOS e Android, mantém-se ágil em redes fracas e aguenta passar para segundo plano a meio de uma tarefa. O estado tipado e imutável mantém-na fácil de evoluir à medida que cresce.
Uma base de código, todos os dispositivos
Manter apps iOS e Android separadas obriga a construir cada funcionalidade duas vezes, e as plataformas acabam por se afastar. Com o Flutter, uma equipa fica responsável por ambas a partir de uma única base de código, sem a sensação estranha de uma web view embrulhada numa app. Construímos apps que parecem e se comportam como nativas em cada plataforma.
- iOS e Android a partir de uma única base de código em Flutter
- Gestão de estado tipada e previsível (Riverpod) e roteamento (go_router)
- Sincronização tolerante ao modo offline contra a sua API de backend
- Integração nativa com a plataforma: câmara, notificações, biometria, deep links
- Resiliência a redes fracas e a passar para segundo plano a meio de uma tarefa
- Um pipeline de publicação que abastece ambas as lojas a partir de uma compilação
Como construímos apps em Flutter
Estado tipado, modelos gerados e uma arquitetura em camadas mantêm a app sustentável à medida que cresce, e uma única equipa pode ficar responsável pelas duas plataformas com confiança.
- 1
Dar forma à app
Fixamos os fluxos, o comportamento offline e as integrações nativas, e acordamos a arquitetura antes de construir.
- 2
Fundação tipada
Estado com Riverpod, navegação com go_router e modelos imutáveis com freezed: uma base que aguenta para lá dos primeiros ecrãs.
- 3
Construir e integrar
Ecrãs e funcionalidades em iterações, ligados à sua API com sincronização tolerante ao modo offline e as integrações de plataforma de que precisa.
- 4
Testar em dispositivos reais
Testes de widget e de integração, mais testes em hardware real nos casos de rede fraca e de passagem para segundo plano que quebram as apps.
- 5
Publicar em ambas as lojas
Um pipeline de publicação que compila uma vez e publica na App Store e na Play Store, para que as funcionalidades cheguem a todo o lado ao mesmo tempo.
O que recebe
Uma app em produção em ambas as lojas, a partir de uma base de código sobre a qual a sua equipa pode continuar a construir.
- Uma única base de código em Flutter a correr em iOS e Android
- Estado e roteamento tipados com uma arquitetura clara e em camadas
- Sincronização tolerante ao modo offline contra o seu backend
- As integrações nativas de que a sua app precisa, feitas por plataforma
- Testes de widget e de integração, executados em dispositivos reais
- Um pipeline de publicação de compilação única para ambas as lojas de apps
A toolchain de Flutter
Uma única base de código em Dart para Android e iOS, estado tipado e imutável e uma só equipa responsável pelas duas plataformas. É sobre esta base que construímos a sua app.
Perguntas sobre desenvolvimento em Flutter
Porquê Flutter em vez de iOS e Android nativos?
O nativo oferece a máxima fidelidade à plataforma, mas implica duas bases de código, duas equipas e cada funcionalidade construída duas vezes. Com o Flutter, uma equipa publica nas duas plataformas a partir de uma única base de código, por isso cada funcionalidade é feita uma vez e chega a todos os dispositivos, sem a sensação de web view das ferramentas multiplataforma mais antigas. Para a maioria das apps de produto, compensa. Se a sua app depende das APIs de plataforma mais recentes, dizemo-lo.
Como se compara o Flutter ao React Native?
Ambos publicam em iOS e Android a partir de uma base de código. O Flutter desenha a sua própria interface, o que garante um comportamento consistente entre plataformas e versões, com tipagem forte via Dart; o React Native apoia-se no ecossistema JavaScript e em componentes nativos. Trabalhamos em Flutter porque o estado tipado e um único percurso de renderização mantêm as apps grandes sustentáveis, mas recomendamos o que melhor se adequar à sua equipa e ao seu produto.
Conseguem assumir uma app em Flutter já existente?
Sim. Começamos com uma breve análise da base de código (arquitetura, gestão de estado, cobertura de testes e as áreas de maior risco) e depois estendemo-la ou refatoramos as partes que o estão a travar. Fica a saber exatamente o que tem antes de mudarmos seja o que for.
A app vai lidar bem com redes más?
É uma das nossas prioridades. Construímos sincronização que tolera o modo offline para que a app se mantenha utilizável quando a ligação cai e volte a sincronizar sem problemas quando regressa. Também testamos a passagem para segundo plano e as redes fracas em dispositivos reais, porque é aí que falham as apps testadas apenas no wifi rápido do escritório.