O que sentry-flutter-sdk faz?
Configuração completa do SDK do Sentry para Flutter e Dart. Use quando precisar 'adicionar Sentry ao Flutter', 'instalar sentry_flutter', 'configurar Sentry no Dart' ou implementar monitoramento de erros, rastreamento, perfilamento, replay de sessão ou registro de logs para aplicativos Flutter. Compatível com Android, iOS, macOS, Linux, Windows e Web.
Funcionalidades
- Monitoramento de Erros: Capture exceções não tratadas e erros de framework
- Rastreamento de Desempenho: Meça tempos de carregamento, chamadas de API e navegação entre telas
- Perfilamento de Código: Identifique gargalos de desempenho com perfis de CPU
- Replay de Sessão: Grave e reproduza interações do usuário para depuração
- Registro de Logs: Envie logs estruturados com níveis de severidade (debug, info, warning, error)
Requisitos
- Flutter SDK >= 3.0.0
- Conta no Sentry.io com projeto criado
- DSN do projeto (pode ser obtido em Settings → Projects → Client Keys)
Instalação
Adicione o pacote ao arquivo pubspec.yaml:
dependencies:
sentry_flutter: ^8.0.0
Ou para projetos Dart puro (sem Flutter):
dependencies:
sentry: ^8.0.0
Configuração Inicial
No arquivo principal (main.dart), inicialize o Sentry antes de rodar o aplicativo:
import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
Future<void> main() async {
await SentryFlutter.init(
(options) {
options.dsn = 'https://[email protected]/0';
options.tracesSampleRate = 1.0; // Ajuste entre 0.0 e 1.0
options.profilesSampleRate = 1.0; // Ativar perfilamento (requer plano Business)
options.enableUserInteractionBreadcrumbs = true; // Rastrear toques e gestos
options.enableOutOfMemoryTracking = true; // Monitorar falta de memória
options.attachScreenshot = true; // Anexar screenshot em erros (apenas iOS/Android)
},
appRunner: () => runApp(MyApp()),
);
}
Uso Avançado
Capturar Erros Manualmente
try {
throw Exception('Erro personalizado');
} catch (exception, stackTrace) {
await Sentry.captureException(exception, stackTrace: stackTrace);
}
Criar Transações Personalizadas
import 'package:sentry/sentry.dart';
final transaction = Sentry.startTransaction(
'process-order',
'task',
bindToScope: true,
);
try {
// Lógica da transação
} finally {
transaction.finish();
}
Configurar Amostragem
options.tracesSampler = (samplingContext) {
if (samplingContext.customSamplingContext['url']?.contains('/health') == true) {
return 0.0; // Não amostrar endpoints de health check
}
return 0.2; // 20% das transações
};
Integração com BLoC
import 'package:sentry_flutter/sentry_flutter.dart';
// No construtor do BLoC
Sentry.addBreadcrumb(Breadcrumb(
message: 'BLoC criado',
category: 'bloc',
level: SentryLevel.info,
));
Solução de Problemas
- Erro "DSN inválido": Verifique se o DSN está correto no formato
https://[email protected]/YYY - Perfis não aparecem: Ative o perfilamento nas configurações do projeto no Sentry.io e defina
profilesSampleRate > 0 - Sessões não gravadas: Certifique-se de que
enableAutoSessionTrackingnão foi desabilitado (padrão: ativado)
Links Úteis
Esta skill foi gerada automaticamente. Para contribuições, abra um PR no repositório.