☠️Firebase Crashlytics

Um exemplo de como implementar o Firebase Crashlytics no seu projeto de maneira eficiente.

Para instalar e iniciar o uso do plugin, basta adicionar ele ao pubspec, e fazer as seguintes configurações para Android:

Para mais informações, segue a documentação.

Vou mostrar agora um exemplo, de como configurar para pegar os erros de maneira eficiente nos nossos projetos.

Para erros fatais e erros de Widget:

Basta adicionar o seguinte código dentro da main do projeto:

FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError;

PlatformDispatcher.instance.onError = ((exception, stackTrace) {
    FirebaseCrashlytics.instance.recordError(exception, stackTrace);
    return true;
 });

Para erros em Requests externas:

Dentro do nosso arquivo de dio_config, é possível fazer um override da função de onError do Dio, para capturar todo e qualquer erro que acontecer. Com isso, podemos utilizar isso para garantir que todos os erros vão ser logados no crashlytics.

@override
  Future onError(DioError err, ErrorInterceptorHandler handler) async {
    FirebaseCrashlytics.instance.setUserIdentifier(
      FirebaseAuth.instance.currentUser?.uid ?? "SEM_ID",
    );

    FirebaseCrashlytics.instance.setCustomKey(
      'URL',
      '${err.requestOptions.baseUrl}${err.requestOptions.path}',
    );

    FirebaseCrashlytics.instance.setCustomKey(
      'USER_ID',
      '${FirebaseAuth.instance.currentUser?.uid}',
    );

    FirebaseCrashlytics.instance.setCustomKey(
      'RESPONSE',
      err.response.toString(),
    );

    await FirebaseCrashlytics.instance.recordError(
      err.error.toString(),
      err.stackTrace,
      reason: err.message,
    );

    handler.next(err);
  }

Como esse exemplo de implementação, é logado todo e qualquer erro nas requests, passando qual foi o usuário do Firebase que fez a request, qual a URL que deu erro e a response que teve.

Last updated