simple_feedback library

An in-app feedback dialog backed by Firebase (Firestore + Storage).

Quick start:

// after Firebase.initializeApp():
SimpleFeedback.configure(SimpleFeedbackConfig(
  colors: FeedbackColors(primary: Color(0xFFFF8B45)),
));

// anywhere:
showSimpleFeedback(context, source: 'HomePage');

Classes

FeedbackColors
Optional color overrides for the feedback dialog.
FeedbackDeviceId
A random id persisted on the device, used to (loosely) attribute feedback submissions without requiring Firebase Auth.
FeedbackImagePipeline
Shrinks screenshot attachments to fit Firestore's 1 MiB document limit.
FeedbackService
Writes feedback documents to Firestore and screenshots to Storage.
FeedbackStrings
All user-visible strings of the feedback dialog.
SimpleFeedback
Entry point for configuring the package globally.
SimpleFeedbackButton
A ready-made feedback button that opens the feedback dialog on tap.
SimpleFeedbackConfig
Global configuration for SimpleFeedback.

Enums

FeedbackEmailVisibility
When the optional email input is shown in the feedback dialog.
FeedbackImageStorage
Where screenshot attachments end up.
FeedbackType
The kind of feedback a user is submitting.

Functions

captureBoundary(GlobalKey<State<StatefulWidget>> key, BuildContext context) → Future<Uint8List?>
Captures the RepaintBoundary behind key as PNG bytes.
showSimpleFeedback(BuildContext context, {required String source, String? userId, String? sourceData, Map<String, dynamic>? metadata, GlobalKey<State<StatefulWidget>>? screenshotKey, SimpleFeedbackConfig? config}) → Future<void>
Opens the feedback dialog.

Typedefs

FeedbackImageUploader = Future<List<String?>> Function(List<Uint8List> images, String deviceId, String storagePrefix)
Uploads images for deviceId, returning a same-length list of storage paths (or null entries for failed uploads).

Exceptions / Errors

FeedbackImageTooLargeException
Thrown when an image cannot be squeezed under the byte budget.
FeedbackUploadException
Thrown when any screenshot upload fails; the whole submission is aborted so no feedback document ends up with missing images.