Skip to content

Repository files navigation

Feature voting board for Flutter apps.

Let your users vote on what to build next. Collect feedback, prioritize your roadmap, ship what matters.

UserOrient Cover

🚀 Getting Started

1. Install

dependencies:
userorient_flutter: <latest-version>

2. Configure

import'package:userorient_flutter/userorient_flutter.dart';
voidmain() {
UserOrient.configure(apiKey:'YOUR_API_KEY');
runApp(MyApp());
}

Get your API key from the UserOrient dashboard.

3. Open the board

UserOrient.openBoard(context);

That's it — two lines of setup, one to launch.


👤 User

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:

FieldDescription
uniqueIdentifierYour internal user ID
fullNameDisplay name
emailEmail address
phoneNumberPhone number
isPayingWhether this is a paying customer (learn more)
extraAny additional key-value data

If uniqueIdentifier is omitted, UserOrient generates one automatically.


🌍 Language

UserOrient.setLanguage(Language.en);

Supported: azdeenesfrittrruarukzh

You can also parse a locale string:

UserOrient.setLanguage(Language.fromCode('en-US')); // Language.en

Falls back to Language.en for unsupported codes.


🎨 Theming

UserOrient.setTheme(
light:UserOrientColors(
backgroundColor:Colors.white,
accentColor:Colors.blue,
),
dark:UserOrientColors(
backgroundColor:Color(0xff1D1D1D),
accentColor:Colors.blue,
),
);
PropertyDescription
backgroundColorBoard background color
accentColorButtons, active tabs, voted state (text color adjusts automatically)

Font family is inherited from your app's ThemeData.


🔬 Data Collection

Control what data the SDK collects when a user submits feedback:

UserOrient.setDataCollection(DataCollection(
email:CollectionMode.required,
metadata:CollectionMode.optional,
));
ModeEmail behaviorMetadata behavior
requiredUser must enter an email before submittingAlways collected
optionalUser can skip the email step (default)Collected if available (default)
notCollectedEmail step is skipped entirelyNot collected

Metadata includes device info (model, OS version) and app info (version, build number).


💎 Paying Users

Mark paying customers so you can filter their votes in the dashboard:

UserOrient.setUser(
uniqueIdentifier:'123456',
isPaying:true,
);

🚪 Logging Out

Clear cached data when a user logs out:

awaitUserOrient.clearCache();

📬 Contact

About

💬 User feedback SDK for Flutter

Topics

Resources

Stars

24 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages