File tree Expand file tree Collapse file tree 8 files changed +140
-0
lines changed
user-feedback/sdk-api-example Expand file tree Collapse file tree 8 files changed +140
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ Future<void> main() async {
6+ await SentryFlutter.init(
7+ (options) {
8+ options.dsn = '___PUBLIC_DSN___';
9+ options.allowUrls = ["^https://sentry.com.*\$", "my-custom-domain"];
10+ },
11+ appRunner: initApp, // Init your App.
12+ );
13+ }
14+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ FutureOr<SentryEvent?> beforeSend(SentryEvent event, Hint hint) async {
6+ return hint is MyHint ? null : event;
7+ }
8+
9+ Future<void> main() async {
10+ await SentryFlutter.init((options) => options.beforeSend = beforeSend);
11+ }
12+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ FutureOr<SentryEvent?> beforeSend(SentryEvent event, Hint hint) async {
6+ // Modify the event here:
7+ event = event.copyWith(serverName: null); // Don't send server names.
8+ return event;
9+ }
10+
11+ Future<void> main() async {
12+ await SentryFlutter.init((options) => options.beforeSend = beforeSend);
13+ }
14+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ Future<void> main() async {
6+ await SentryFlutter.init(
7+ (options) {
8+ options.dsn = '___PUBLIC_DSN___';
9+ options.denyUrls = ["^.*ends-with-this\$", "denied-url"];
10+ },
11+ appRunner: initApp, // Init your App.
12+ );
13+ }
14+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ FutureOr<SentryEvent?> beforeSend(SentryEvent event, Hint hint) async {
6+ if (event.throwable is DatabaseException) {
7+ event = event.copyWith(fingerprint: ['database-connection-error']);
8+ }
9+ return event;
10+ }
11+
12+ Future<void> main() async {
13+ await SentryFlutter.init((options) => options.beforeSend = beforeSend);
14+ }
15+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ FutureOr<SentryEvent?> beforeSend(SentryEvent event, Hint hint) async {
6+ if (event.throwable is DatabaseException) {
7+ event = event.copyWith(fingerprint: ['database-connection-error']);
8+ }
9+ return event;
10+ }
11+
12+ Future<void> main() async {
13+ await SentryFlutter.init((options) => options.beforeSend = beforeSend);
14+ }
15+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ class MyRpcException implements Exception {
6+ final String function;
7+ final int httpStatusCode;
8+
9+ MyRpcException(this.function, this.httpStatusCode);
10+ }
11+
12+ FutureOr<SentryEvent?> beforeSend(SentryEvent event, Hint hint) async {
13+ if (event.throwable is MyRpcException) {
14+ final exception = event.throwable as MyRpcException;
15+ event = event.copyWith(fingerprint: [
16+ '{{ default }}',
17+ exception.function,
18+ exception.httpStatusCode.toString(),
19+ ]);
20+ }
21+ return event;
22+ }
23+
24+ Future<void> main() async {
25+ await SentryFlutter.init((options) => options.beforeSend = beforeSend);
26+ }
27+ ```
Original file line number Diff line number Diff line change 1+ ``` dart
2+ import 'package:flutter/widgets.dart';
3+ import 'package:sentry_flutter/sentry_flutter.dart';
4+
5+ // Option 1: Retrieving SentryId from beforeSend
6+ SentryId sentryId = SentryId.empty();
7+
8+ await SentryFlutter.init((options) {
9+ options.beforeSend = (event, hint) async {
10+ sentryId = event.eventId;
11+ return event;
12+ };
13+ });
14+
15+ // Option 2: Retrieving SentryId from the method capturing the event
16+ SentryId sentryId = Sentry.captureMessage("My message");
17+
18+ // Option 3: Retrieving SentryId from the beforeSend callback
19+ SentryId sentryId = Sentry.lastEventId;
20+
21+ final userFeedback = SentryUserFeedback(
22+ eventId: sentryId,
23+ comments: 'Hello World!',
24+ 25+ name: 'John Doe',
26+ );
27+
28+ Sentry.captureUserFeedback(userFeedback);
29+ ```
You can’t perform that action at this time.
0 commit comments