REGISTRO DOI: 10.69849/revistaft/cl10202505201744
Kelvin Miller Nunes Higino1
Resumo
O presente artigo apresenta o desenvolvimento de um aplicativo multiplataforma para agregação de notícias, com uso do framework Flutter e integração com APIs de conteúdo. O objetivo é proporcionar ao usuário uma experiência prática e personalizada, centralizando o acesso a múltiplas fontes de notícias em uma única interface. A arquitetura foi estruturada em camadas para garantir escalabilidade e manutenção, com foco na experiência do usuário (UX) e na eficiência do consumo de dados. Como resultado, o aplicativo oferece uma alternativa viável aos principais agregadores de conteúdo disponíveis atualmente.
Palavras-chave: Flutter; Dart; Agregador de Notícias; Multiplataforma; UX; Integração de API.
Abstract
This article presents the development of a cross-platform news aggregator application using the Flutter framework and API integration. The goal is to provide users with a practical and personalized experience by centralizing access to multiple news sources within a single interface. The architecture was structured in layers to ensure scalability and maintainability, focusing on user experience (UX) and efficient data consumption. As a result, the application offers a viable alternative to the main content aggregators currently available.
Keywords: Flutter; Dart; News Aggregator; Cross-Platform; UX; API Integration.
1. Introdução
Com o crescimento exponencial da informação digital, o acesso rápido a notícias tornou-se essencial. No entanto, a dispersão de fontes e a necessidade de visitar diversos sites tornam essa busca demorada. Este artigo propõe um aplicativo que centraliza o acesso a notícias de diferentes fontes, agregando-as de maneira intuitiva e personalizada. A solução foi desenvolvida com Flutter, possibilitando a entrega para Android e iOS com uma única base de código.
2. Referencial Teórico
A agregação de notícias visa reunir conteúdos de diversas fontes em uma interface unificada, economizando tempo e aumentando a produtividade informacional. A linguagem Dart e o framework Flutter são fundamentais por sua eficiência, sintaxe limpa e suporte multiplataforma. A integração com APIs REST permite que o aplicativo exiba notícias em tempo real. Além disso, princípios de UX foram incorporados para garantir acessibilidade e boa experiência visual.
3. Trabalhos Relacionados
O Google News é abrangente, mas limita a personalização de fontes. O Flipboard destaca-se pela interface, mas foca em categorias amplas. O Feedly oferece alta personalização, mas com recursos limitados na versão gratuita. O aplicativo proposto busca unir as melhores práticas desses exemplos, oferecendo personalização sem custos e com interface leve, limpa e sem anúncios.
A Tabela 1 apresenta um comparativo das principais funcionalidades entre o aplicativo proposto e os concorrentes analisados.
Google News | Feedly | Minhas Notícias | ||
Personalização | Baixa | Média | Alta | Alta |
Acesso offline | Sim | Sim | Sim | Não |
Anúncios | Sim | Sim | Sim | Não |
Integração com API | Não | Não | Sim | Sim |
Custo | Gratuito | Gratuito | Freemium | Gratuito |
Tabela 1: Comparativo de funcionalidades entre agregadores de notícias. Fonte: Elaborado pelo autor (2024).
4. Metodologia
Adotou-se uma arquitetura em três camadas: Interface do Usuário (UI), Lógica de Negócio e Camada de Dados, com base no modelo tradicional de separação de responsabilidades. Essa estrutura foi aplicada para garantir a organização, modularidade, escalabilidade e facilidade de manutenção do projeto, especialmente em um contexto de desenvolvimento multiplataforma com o framework Flutter. A estrutura da arquitetura proposta é ilustrada na Figura 1.
Figura 1: Diagrama da arquitetura em camadas do aplicativo. Fonte: Elaborado pelo autor (2024).
Em alinhamento com essa arquitetura, procedeu-se à implementação prática do aplicativo “Minhas Notícias” utilizando a linguagem Dart, com estruturação do código espelhando as responsabilidades de cada camada. Isso favoreceu a reutilização de componentes, testes unitários e manutenção do software ao longo do tempo.
4.1 Camada de Interface do Usuário (UI)
A UI foi construída utilizando widgets declarativos do Flutter, permitindo o desenvolvimento de interfaces responsivas e visualmente consistentes tanto para Android quanto para iOS. As principais telas desenvolvidas foram:
SiteInputScreen: tela inicial, onde o usuário insere URLs das fontes de notícias. Nela, foi implementado um TextField com validação de URL e feedback visual, proporcionando uma entrada de dados segura e amigável.
NewsFeedScreen: tela que exibe o feed de notícias agregadas, utilizando um ListView.builder para renderizar dinamicamente cada notícia em um card contendo título, resumo e botão para leitura completa.
A composição visual foi planejada com foco na hierarquia da informação, acessibilidade e desempenho da interface, garantindo uma navegação intuitiva.
4.2 Camada de Lógica de Negócio
A lógica de negócios foi estruturada com o padrão Provider, que permitiu o gerenciamento eficiente e reativo de estados. Essa camada foi responsável por:
Validar e armazenar a lista de URLs fornecidas pelo usuário;
Realizar chamadas HTTP assíncronas à NewsAPI com o pacote http;
Converter as respostas JSON em objetos do tipo News, contendo título, descrição, data de publicação e link da notícia;
Agregar e ordenar as notícias recebidas por data de publicação;
Gerenciar a navegação entre as telas e as interações do usuário com os dados.
Esse desacoplamento da lógica em relação à interface facilitou a testabilidade e a reutilização de funções centrais da aplicação.
4.3 Camada de Dados
A camada de dados foi projetada para lidar com armazenamento local e integração com serviços externos. As abordagens adotadas incluem:
Utilização do pacote shared_preferences para armazenar de forma persistente as URLs informadas pelo usuário;
Integração com a NewsAPI por meio de chamadas RESTful, processando as respostas em tempo real para alimentar o feed de notícias;
Definição de modelos como News, com métodos from Json() e toJson() para o mapeamento de dados entre a API e a estrutura interna da aplicação.
4.4 Ferramentas e Tecnologias Adicionais
Além dos pacotes mencionados, outros recursos foram fundamentais para a composição e funcionalidade do aplicativo:
url_launcher: utilizado para abrir a notícia completa em um navegador externo ao clicar em um item do feed;
flutter_launcher_icons e flutter_native_splash: responsáveis pela personalização do ícone e da tela de splash da aplicação;
intl: biblioteca empregada para a formatação de datas, adaptando a apresentação ao formato local do usuário.
4.5 Ciclo de Desenvolvimento
O desenvolvimento do aplicativo seguiu uma abordagem iterativa e incremental, com ciclos curtos de implementação, testes e refatoração. O uso do recurso de hot reload do Flutter permitiu validar rapidamente alterações visuais e lógicas, otimizando o fluxo de trabalho. O código-fonte foi modularizado com boas práticas de engenharia de software, o que contribuiu para a qualidade geral da aplicação.
5. Resultados e Discussão
O aplicativo demonstrou desempenho estável, com tempos de resposta rápidos e navegação intuitiva. A simplicidade da interface, focada na experiência do usuário, é um dos diferenciais, conforme ilustrado na Figura 2 e na Figura 3.
Figura 2: Telas do aplicativo “Minhas Notícias”.
Fonte: Elaborado pelo autor (2025).
Figura 3: Tela de visualização de notícias.
Fonte: Elaborado pelo autor (2025).
Os testes validaram a eficácia da agregação de conteúdo e a persistência local das preferências do usuário. A simplicidade da interface se mostrou um diferencial positivo frente aos concorrentes analisados.
Figura 4: Resultados dos testes de desempenho do aplicativo.
Fonte: Elaborado pelo autor (2024).
6. Conclusão
O projeto atingiu seu objetivo de facilitar o acesso a notícias de múltiplas fontes em uma plataforma unificada e acessível. O uso do Flutter demonstrou-se vantajoso pela rapidez no desenvolvimento e entrega multiplataforma. Como trabalhos futuros, propõe-se a inclusão de notificações em tempo real, suporte offline e tradução para múltiplos idiomas.
Referências
- GOOGLE. Flutter Documentation. Documentação oficial da linguagem Flutter. Disponível em: <https://flutter.dev/docs>. Acesso em: 13 maio 2025.
- NEWSAPI. News API documentation: guia de uso da API de notícias. Disponível em: <https://newsapi.org/docs>. Acesso em: 13 maio 2025.
- ANDROID DEVELOPERS. Shared preferences: documentação oficial da API Android. Disponível em: <https://developer.android.com/reference/android/content/SharedPreferences>. Acesso em: 14 maio 2025.
1Centro Universitário Mário Pontes Jucá – UMJ
E-mail: Kel_federal@live.com