Fewchurs
Docs / Flutter

Flutter

Add a native feature request board to your Flutter app. One package, one line of setup.

Needs Flutter 3.10 or later and Dart 3.0 or later. Runs on Android, iOS, web, macOS, Windows and Linux.

Install

  1. Add the package

    The package installs from GitHub. Add it to your app's pubspec.yaml:

    pubspec.yaml
    dependencies:
      fewchurs:
        git:
          url: https://github.com/fewchurs/fewchurs-flutter.git
          path: packages/fewchurs
          ref: v1.2.0
    
    dependency_overrides:
      fewchurs_core:
        git:
          url: https://github.com/fewchurs/fewchurs-flutter.git
          path: packages/fewchurs_core
          ref: v1.2.0
  2. Get it

    flutter pub get
ref pins the release (v1.2.0 is the latest). Keep both ref lines the same. The dependency_overrides part is only needed until the packages are on pub.dev.

Platform setup

Android: release builds need the internet permission in android/app/src/main/AndroidManifest.xml. Debug builds have it already, which is why a missing one only shows up in release.

AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>

macOS: allow network access in both macos/Runner/DebugProfile.entitlements and Release.entitlements:

<key>com.apple.security.network.client</key>
<true/>

iOS, web, Windows and Linux need nothing.

Set up

Call configure once, before runApp. Use the API key from your dashboard. It makes no network calls, so it doesn't slow down startup.

main.dart
import 'package:fewchurs/fewchurs.dart';
import 'package:flutter/material.dart';

void main() {
  Fewchurs.configure(apiKey: 'fr_live_xxx');
  runApp(const MyApp());
}

Show the board

Open the board as a full-screen page. It handles everything inside: the Top and New tabs, votes, comments and new requests.

FilledButton(
  onPressed: () => Fewchurs.showBoard(context),
  child: const Text('Suggest a feature'),
)

Or as a bottom sheet:

Fewchurs.showBoardSheet(context);

Or put FewchursBoard anywhere, like a tab or a route:

// In a tab or a page that has its own app bar
const FewchursBoard(showAppBar: false)

On tablets, web and desktop the board shows the list and the open request side by side.

To open one request, for example from a deep link or a notification, pass its ID:

Fewchurs.showBoard(
  context,
  board: FewchursBoard(showCloseButton: true, initialFeatureId: id),
);

Colors and theme

By default the board follows your app's Theme: colors, fonts and light or dark mode. To change it, add a FewchursThemeData to your theme's extensions.

MaterialApp(
  theme: ThemeData(
    colorSchemeSeed: const Color(0xFFED5F18),
    extensions: const [
      FewchursThemeData(
        cardRadius: 14,
        voteButtonStyle: VoteButtonStyle.pill,
      ),
    ],
  ),
)

The package README covers every option: tabs, copy and translations, iOS-style widgets, custom pieces of the board, and building your own UI.

What your plan changes

Your plan is applied on our servers, so you never need to change code or update the package when it changes.

FreeStarterPro
Requests the board listsFirst 5First 200All
"Powered by Fewchurs" lineShownHiddenHidden

Newer requests are still saved and show in your dashboard. A request someone just submitted appears on their board straight away, but once the app is past its limit it leaves the list on the next refresh. See pricing.

About the API key

It's fine to put this key in your app. It can only do what the board does: list, vote, comment and suggest. It can't change your settings or read anything private.

The package gives each device a random ID and saves it on the device. That is how it remembers votes without an account. Read more in How it works.