Feature voting board for Flutter apps.
Let your users vote on what to build next. Collect feedback, prioritize your roadmap, ship what matters.
dependencies:
userorient_flutter: <latest-version>import'package:userorient_flutter/userorient_flutter.dart';
voidmain() {
UserOrient.configure(apiKey:'YOUR_API_KEY');
runApp(MyApp());
}Get your API key from the UserOrient dashboard.
UserOrient.openBoard(context);That's it — two lines of setup, one to launch.
Identify the current user so votes persist across sessions. Call setUser before opening the board.
UserOrient.setUser(
uniqueIdentifier:'123456',
fullName:'Kamran Bekirov',
email:'kamran@userorient.com',
);All fields are optional. Pass whatever you have:
| Field | Description |
|---|---|
uniqueIdentifier | Your internal user ID |
fullName | Display name |
email | Email address |
phoneNumber | Phone number |
isPaying | Whether this is a paying customer (learn more) |
extra | Any additional key-value data |
If uniqueIdentifier is omitted, UserOrient generates one automatically.
UserOrient.setLanguage(Language.en);Supported: azdeenesfrittrruarukzh
You can also parse a locale string:
UserOrient.setLanguage(Language.fromCode('en-US')); // Language.enFalls back to Language.en for unsupported codes.
UserOrient.setTheme(
light:UserOrientColors(
backgroundColor:Colors.white,
accentColor:Colors.blue,
),
dark:UserOrientColors(
backgroundColor:Color(0xff1D1D1D),
accentColor:Colors.blue,
),
);| Property | Description |
|---|---|
backgroundColor | Board background color |
accentColor | Buttons, active tabs, voted state (text color adjusts automatically) |
Font family is inherited from your app's ThemeData.
Control what data the SDK collects when a user submits feedback:
UserOrient.setDataCollection(DataCollection(
email:CollectionMode.required,
metadata:CollectionMode.optional,
));| Mode | Email behavior | Metadata behavior |
|---|---|---|
required | User must enter an email before submitting | Always collected |
optional | User can skip the email step (default) | Collected if available (default) |
notCollected | Email step is skipped entirely | Not collected |
Metadata includes device info (model, OS version) and app info (version, build number).
Mark paying customers so you can filter their votes in the dashboard:
UserOrient.setUser(
uniqueIdentifier:'123456',
isPaying:true,
);Clear cached data when a user logs out:
awaitUserOrient.clearCache();- Email: kamran@userorient.com
- Twitter: @userorient
