Enable Sentry

Sentry now provides an official flutter client.
This commit is contained in:
Vishesh Handa
2021-04-14 16:18:14 +02:00
parent edd45a04e9
commit 9668170f91
2 changed files with 14 additions and 11 deletions

View File

@ -15,6 +15,7 @@ import 'package:path_provider/path_provider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:quick_actions/quick_actions.dart'; import 'package:quick_actions/quick_actions.dart';
import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:shared_preferences/shared_preferences.dart'; import 'package:shared_preferences/shared_preferences.dart';
import 'package:gitjournal/analytics.dart'; import 'package:gitjournal/analytics.dart';
@ -307,6 +308,7 @@ class _JournalAppState extends State<JournalApp> {
navigatorObservers: <NavigatorObserver>[ navigatorObservers: <NavigatorObserver>[
AnalyticsRouteObserver(), AnalyticsRouteObserver(),
SentryNavigatorObserver(),
], ],
initialRoute: router.initialRoute(), initialRoute: router.initialRoute(),
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,

View File

@ -8,6 +8,7 @@ import 'package:flutter/foundation.dart';
import 'package:device_info/device_info.dart'; import 'package:device_info/device_info.dart';
import 'package:package_info/package_info.dart'; import 'package:package_info/package_info.dart';
import 'package:sentry/sentry.dart'; import 'package:sentry/sentry.dart';
import 'package:sentry_flutter/sentry_flutter.dart';
import 'package:stack_trace/stack_trace.dart'; import 'package:stack_trace/stack_trace.dart';
import 'package:gitjournal/.env.dart'; import 'package:gitjournal/.env.dart';
@ -15,15 +16,15 @@ import 'package:gitjournal/app.dart';
import 'package:gitjournal/app_settings.dart'; import 'package:gitjournal/app_settings.dart';
import 'package:gitjournal/utils/logger.dart'; import 'package:gitjournal/utils/logger.dart';
SentryClient _sentryClient; Future<void> initSentry() async {
Future<SentryClient> _initSentry() async { if (Sentry.isEnabled) {
return SentryClient(SentryOptions( return;
dsn: environment['sentry'], }
)); await SentryFlutter.init(
} (options) {
options.dsn = environment['sentry'];
Future<SentryClient> getSentryClient() async { },
return _sentryClient ??= await _initSentry(); );
} }
Future<SentryEvent> get _environmentEvent async { Future<SentryEvent> get _environmentEvent async {
@ -140,14 +141,14 @@ Future<void> captureSentryException(
SentryLevel level = SentryLevel.error, SentryLevel level = SentryLevel.error,
}) async { }) async {
try { try {
final sentry = await getSentryClient(); await initSentry();
final event = (await _environmentEvent).copyWith( final event = (await _environmentEvent).copyWith(
exception: exception, exception: exception,
breadcrumbs: breadcrumbs, breadcrumbs: breadcrumbs,
level: level, level: level,
); );
return sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse); return Sentry.captureEvent(event, stackTrace: Trace.from(stackTrace).terse);
} catch (e) { } catch (e) {
print("Failed to report with Sentry: $e"); print("Failed to report with Sentry: $e");
} }