Top 10 Trending Packages (Dezembro 2025) 🔝
1. Riverpod
O Riverpod continua no topo como a solução de gerenciamento de estado mais robusta. Ele é independente do BuildContext, o que o torna seguro contra erros em tempo de compilação.
-
Exemplo: Uso de um
StateProviderpara gerenciar um contador global. -
Utilidade: Ideal para injeção de dependências e gerenciamento de estado global escalável.
// Definição de um Provider que busca o nome de um usuário
final userNameProvider = Provider<String>((ref) => "Desenvolvedor Flutter");
class HomeRiverpod extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// Escuta as mudanças no provider
final name = ref.watch(userNameProvider);
return Text('Olá, $name');
}
}
2. Dio
O cliente HTTP definitivo para Dart. Ele suporta interceptadores, cancelamento de requisições e upload de arquivos, sendo o padrão ouro para APIs REST.
-
Exemplo: Realizar uma requisição GET com tratamento de exceções
DioException. -
Utilidade: Essencial para qualquer aplicação que precise consumir dados de servidores externos.
final dio = Dio();
Future<void> fetchData() async {
try {
final response = await dio.get('https://api.exemplo.com/v1/perfil');
print(response.data);
} on DioException catch (e) {
// Trata erros de rede de forma específica
print('Erro na requisição: ${e.response?.statusCode}');
}
}
3. Mcp_server
Como parte do esforço de IA do Google, este pacote implementa o Model Context Protocol.
-
Por que é tendência: Ele permite que IDEs Agênticos, como o Antigravity, entendam o contexto do seu projeto para realizar ações por você.
-
Utilidade: Fornece capacidades de análise e teste para agentes de IA.
import 'package:mcp_server/mcp_server.dart';
void main() async {
final server = McpServer(
name: "FlutterAnalysisServer",
version: "1.0.0",
capabilities: [
// Permite que a IA execute análises estáticas no seu código
DartAnalysisCapability(),
],
);
await server.start();
}
4. Drift
Um banco de dados reativo e potente para SQLite. Ele permite escrever consultas SQL puras com segurança de tipos em Dart.
-
Exemplo: Definição de tabelas (ex:
Tasks) e execução de selects reativos. -
Utilidade: Perfeito para apps “Offline-First” com estruturas de dados relacionais complexas.
class Users extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get name => text()();
}
// Consulta reativa: a UI atualiza sozinha quando o banco muda
Stream<List<User>> watchUsers(MyDatabase db) {
return db.select(db.users).watch();
}
5. Freezed
Um gerador de código para classes de dados imutáveis e uniões (unions). Ele remove o código repetitivo (boilerplate) de modelos.
-
Exemplo: Criação automática de métodos
copyWithe conversão JSON. -
Utilidade: Garante a imutabilidade dos dados, essencial para evitar bugs de estado.
@freezed
class AuthState with _$AuthState {
const factory AuthState.initial() = _Initial;
const factory AuthState.loading() = _Loading;
const factory AuthState.authenticated(User user) = _Authenticated;
}
// Uso no código: o compilador garante que você trate todos os estados
state.maybeWhen(
authenticated: (user) => print(user.name),
orElse: () => print("Não logado"),
);
6. Flutter Secure Storage
Fornece uma camada de segurança para armazenar dados sensíveis como tokens JWT no Keychain (iOS) ou Keystore (Android).
-
Exemplo: Gravação e leitura de tokens de autenticação de forma criptografada.
-
Utilidade: Proteção de credenciais de usuário que não devem ficar em bancos de dados comuns.
final storage = FlutterSecureStorage(); // Escrita segura await storage.write(key: 'jwt_token', value: 'secret_value_123'); // Leitura segura String? token = await storage.read(key: 'jwt_token');
7. Go Router
O pacote de navegação declarativa oficial que simplifica rotas aninhadas e o manuseio de Deep Linking.
-
Exemplo: Definição de rotas com parâmetros dinâmicos (ex:
/user/:id). -
Utilidade: Torna a navegação robusta e organizada, especialmente em projetos Web e Desktop.
final _router = GoRouter(
routes: [
GoRoute(
path: '/carro/:modelo',
builder: (context, state) => CarDetailScreen(
modelo: state.pathParameters['modelo']!,
),
),
],
);
8. Isar
Considerado o banco NoSQL mais rápido para Flutter, otimizado para alta performance e consultas complexas.
-
Exemplo: Uso de filtros nativos como
nameStartsWith("A")para buscas rápidas. -
Utilidade: Armazenamento local de grandes volumes de dados com latência mínima.
@collection
class Carro {
Id id = Isar.autoIncrement;
late String marca;
}
// Busca rápida usando filtros nativos
final todosOsMustangs = await isar.carros
.filter()
.marcaEqualTo("Ford")
.findAll();
9. Lottie
Permite a renderização de animações complexas do Adobe After Effects exportadas como JSON.
-
Exemplo: Exibição de animações leves e vetoriais usando
Lottie.asset(). -
Utilidade: Adiciona um polimento visual de alto nível sem sobrecarregar o tamanho do app.
Lottie.network(
'https://assets9.lottiefiles.com/packages/lf20_success.json',
repeat: false,
onLoaded: (composition) {
print('Animação carregada com sucesso!');
},
);
10. Intl
A biblioteca padrão para internacionalização (i18n) e localização (l10n), cuidando de formatos de data, moeda e traduções.
-
Exemplo: Formatação de moedas para o padrão local (ex: R$ 1.500,00).
-
Utilidade: Indispensável para apps que buscam alcance global e conformidade com padrões regionais.
// Formatando data para o Brasil
String dataFormatada = DateFormat.yMMMd('pt_BR').format(DateTime.now());
// Formatando moeda
String valorEmReal = NumberFormat.simpleCurrency(locale: 'pt_BR').format(250.50);
// Resultado: R$ 250,50
🛡️ Resumo de Escolha Técnica
| Se o seu objetivo é… | Utilize… |
| Inteligência Artificial | Mcp_server |
| Gerenciamento de Estado | Riverpod |
| Segurança de Dados | Flutter Secure Storage |
| Performance Local | Isar ou Drift |