⁉️Utilizando o Sentry

O Sentry é uma plataforma de monitoramento de erros que oferece uma solução completa para rastrear e corrigir problemas em tempo real em aplicativos Flutter.

⁉️ Monitoramento de Erros e Desempenho no Flutter com Sentry

O Sentry é uma plataforma de monitoramento de erros e desempenho que permite rastrear problemas em tempo real e obter insights detalhados sobre a estabilidade e a performance do seu aplicativo Flutter.


✅ Passo 1: Crie uma Conta no Sentry

Acesse https://sentry.ioarrow-up-right e crie uma conta, caso ainda não tenha.

Configure um novo projeto para o seu app Flutter no painel da plataforma.


✅ Passo 2: Adicione a Dependência

Inclua o sentry_flutter no seu pubspec.yaml:

dependencies:  
	sentry_flutter:  ^5.0.0

Em seguida, execute:

flutter pub get

✅ Passo 3: Inicialização no main()

No main() do seu aplicativo, inicialize o Sentry com a sua DSN (chave fornecida pela plataforma):

import 'package:flutter/material.dart';
import 'package:sentry_flutter/sentry_flutter.dart';

void main() async {
  await SentryFlutter.init(
    (options) {
      options.dsn = 'SUA_CHAVE_DE_API_AQUI';

      // 🔍 Captura de rastros de performance (navegação, async, etc.)
      options.tracesSampleRate = 1.0; // 100% das transações

      // 🧠 Ativa o rastreamento automático de sessões
      options.enableAutoSessionTracking = true;

      // 📌 Inclui automaticamente stacktraces mesmo em logs manuais
      options.attachStacktrace = true;

      // 🧪 Ativa o modo de debug apenas em desenvolvimento
      options.debug = kDebugMode;

      // 🎥 (Opcional) Captura sessões em vídeo quando há erro
      options.experimental.replay.sessionSampleRate = 0.7; // 70% das sessões
      options.experimental.replay.onErrorSampleRate = 1.0; // 100% com erro

      // 🧵 Número máximo de breadcrumbs (ações anteriores ao erro)
      options.maxBreadcrumbs = 100;

      // 🌍 Define o ambiente automaticamente baseado na BASE_URL
      final baseUrl = dotenv.env['BASE_URL'] ?? '';
      if (baseUrl.contains('deve')) {
        options.environment = 'development';
      } else if (baseUrl.contains('stag')) {
        options.environment = 'staging';
      } else if (baseUrl.contains('hmlg')) {
        options.environment = 'homolog';
      } else {
        options.environment = 'production';
      }
    },
    appRunner: () => runApp(MyApp()),
  );
}

💡 Dica: Envolva seu app em runZonedGuarded para capturar exceções não tratadas:


✅ Passo 4: Centralize com um SentryService

Recomenda-se criar uma classe utilitária para facilitar o uso do Sentry em todo o projeto:

Exemplos de Uso

Capturar erro manualmente com contexto:

Adicionar uma ação importante como breadcrumb:

Definir o contexto do usuário:


✅ Passo 5: Boas Práticas no Uso

  • Utilize SentryService.captureException() sempre que capturar manualmente um erro com try/catch.

  • Registre ações ou eventos importantes com SentryService.addBreadcrumb().

  • Assim que possível, chame SentryService.setUserContext() para associar eventos a usuários específicos.

  • Use Sentry.captureMessage() para registrar ocorrências importantes que não geram exceptions.

  • Inclua informações adicionais no escopo, como versão do app, permissões, device info, etc.

  • Use Sentry.startTransaction() se quiser medir performance manualmente em tarefas críticas.


📊 Monitoramento de Desempenho

O Sentry também permite rastrear a performance do app:

  • Traces automáticos: com tracesSampleRate: 1.0, o Sentry coleta dados de navegação e async tasks.

  • Session Replay: gravações da sessão do usuário em erros críticos.

  • Transações manuais: com startTransaction() para rastrear tarefas específicas.


🎯 Benefícios de uma Integração Completa

  • Rastreabilidade aprimorada: com breadcrumbs e contexto de usuário.

  • Diagnóstico eficiente: stacktrace rico e metadados sobre ambiente, versão, etc.

  • Correções mais rápidas: alertas proativos e session replay ajudam a reproduzir bugs.

  • Melhor experiência para o usuário: menos falhas e melhor performance.


✅ Conclusão

Ao seguir esse padrão de integração com o Sentry no Flutter, você garante um monitoramento robusto, com contexto rico, alertas inteligentes e rastreamento de performance. Use o SentryService como interface principal para padronizar e facilitar a captura de erros, mensagens e contexto de uso.

Last updated