File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ import 'sentry_feedback_options.dart';
88import 'package:flutter/services.dart' ;
99import 'sentry_logo.dart' ;
1010import '../replay/integration.dart' ;
11+ import '../utils/internal_logger.dart' ;
1112
1213class SentryFeedbackWidget extends StatefulWidget {
1314 SentryFeedbackWidget ({
@@ -388,7 +389,15 @@ class _SentryFeedbackWidgetState extends State<SentryFeedbackWidget> {
388389
389390 if (! mounted) return ;
390391
391- widget.options.onSubmitSuccess? .call (feedback, sentryId);
392+ try {
393+ widget.options.onSubmitSuccess? .call (feedback, sentryId);
394+ } catch (exception, stackTrace) {
395+ internalLogger.error (
396+ 'SentryFeedbackWidget failed to execute onSubmitSuccess callback' ,
397+ error: exception,
398+ stackTrace: stackTrace,
399+ );
400+ }
392401 _showSuccessSnackBar ();
393402 _dismiss (pendingAssociatedEventId: false );
394403 }
Original file line number Diff line number Diff line change @@ -889,6 +889,31 @@ void main() {
889889 expect (receivedEventId, isNotNull);
890890 expect (receivedEventId, isNot (const SentryId .empty ()));
891891 });
892+
893+ testWidgets ('dismisses and shows snackbar when onSubmitSuccess throws' ,
894+ (tester) async {
895+ fixture.options.feedback.onSubmitSuccess = (feedback, eventId) {
896+ throw Exception ('onSubmitSuccess failed' );
897+ };
898+
899+ await fixture.pumpFeedbackHost (tester);
900+
901+ await tester.tap (find.text ('Show Feedback' ));
902+ await tester.pumpAndSettle ();
903+
904+ await tester.enterText (
905+ find.byKey (const ValueKey ('sentry_feedback_message_textfield' )),
906+ 'callback-throw-test' ,
907+ );
908+ await tester.tap (find.text ('Send Bug Report' ));
909+ await tester.pumpAndSettle ();
910+
911+ expect (tester.takeException (), isNull);
912+ expect (find.byType (SentryFeedbackWidget ), findsNothing);
913+ expect (find.byType (SnackBar ), findsOneWidget);
914+ expect (find.text ('Thank you for your report!' ), findsOneWidget);
915+ expect (SentryFeedbackWidget .pendingAssociatedEventId, isNull);
916+ });
892917 });
893918 });
894919}
You can’t perform that action at this time.
0 commit comments