Installation
From flutter pub add to a working feedback modal in one flow — install, mount FeddyProvider, configure with your Project ID, drop in a button, verify in the dashboard.
This page takes you from a fresh Flutter project to a working feedback submission landing in your Feddy dashboard. Read top-to-bottom; every section is a step in the same flow.
Requirements
| Item | Version |
|---|---|
| Flutter | 3.10+ |
| Dart | 3.0+ |
| iOS deployment target | 12+ |
| Android minSdk | 21+ |
Install the package
flutter pub add feddy_flutterimage_picker and in_app_purchase are bundled transitively — you do
not need to add them yourself.
Get your Project ID
- Sign up at feddy.app and create a workspace
- Open Settings → API Keys
- Copy the Project ID — it looks like
fed_xxxxxxxxxxxx(thefed_prefix followed by 12 alphanumeric characters)
Project ID vs API Key
The Project ID (fed_xxxxxxxxxxxx) is safe to embed in your client
app — it only grants ingest. The dashboard also generates API Keys
(fed_sk_xxxxxxxxxxxx); those are server-to-server secrets and must
never be shipped in a client. The SDK rejects anything starting with
fed_sk_.
Configure and mount FeddyProvider
Call Feddy.configure(...) once at app launch and wrap your root widget
in FeddyProvider. The provider mounts the built-in compose modal and
Smart Review sheet so the imperative APIs (Feddy.openFeedback(),
Feddy.requestReviewIfAppropriate()) work from anywhere in your widget
tree.
import 'package:feddy_flutter/feddy_flutter.dart';
import 'package:flutter/material.dart';
void main() {
Feddy.configure(apiKey: 'fed_xxxxxxxxxxxx');
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const FeddyProvider(child: HomePage()),
);
}
}Feddy.configure() is synchronous, fire-and-forget, and never
throws — invalid keys or network failures log to the console rather
than surfacing as a thrown error.
Verify the install
Drop the button below into any screen to confirm the SDK is wired up. It opens the bundled feedback modal — submit a quick test message:
import 'package:feddy_flutter/feddy_flutter.dart';
import 'package:flutter/material.dart';
class VerifyButton extends StatelessWidget {
const VerifyButton({super.key});
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () => Feddy.openFeedback(boardKey: 'features'),
child: const Text('Send Feedback'),
);
}
}In the Feddy dashboard, navigate to Inbox — your test submission should appear at the top of the list within a second or two.
Offline retry
If the device was offline at submit time, the SDK queues the payload
locally (via shared_preferences) and replays it on the next
Feddy.configure(...) call. You don't need to handle this manually —
but it does mean test submissions may take a moment to land if you're
on a flaky network.
What's next
You're integrated. Continue with: