FLUTTER ECOSYSTEM

flutterwtf/Suggest-a-Feature

Flutter 앱을 위한 피드백 수집 도구

기능 제안 프로젝트 이미지
Stars
8
Forks
2
최근 푸시(UTC)
2025. 10. 7.
프로젝트 상태
활성
What the Flutter GitHub avatar
GITHUB Organization

What the Flutter ↗

Leading Flutter development agency 🚀

언어DartC++CMakeRubyHTMLCSwiftObjective-C

기술 주제

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 8 개

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

README 펼치기 / 접기

Suggest a Feature

What the Flutter

Crafted with passion by What the Flutter 🦜

Pub Build Status CodeFactor


This Flutter package is a ready-made module which allows other developers to implement additional menu in their own mobile app where users can share their suggestions about the application in real time, discuss them with others, and vote for each other's suggestions.

You can check interactive example here.

A small demo:

https://github.com/flutterwtf/Suggest-a-Feature/assets/93796040/adb45e1d-204e-4614-932d-3c73d4899a05

Usage

At first, you need to implement SuggestionsDataSource. This is an interface which we use to handle all the data-layer logic. There you can add the connection to your DB.

If you use firestore as a data source, you can use our ready-made implementation Suggest a feature Firestore.

Then you need to move the SuggestionsPage. For example:

Navigator.of(context).push(
  MaterialPageRoute(
    builder: (context) => SuggestionsPage(
      userId: '1',
      suggestionsDataSource: MyDataSource(
        userId: '1',
      ),
      theme: SuggestionsTheme.initial(),
      onUploadMultiplePhotos: null,
      onSaveToGallery: null,
      onGetUserById: () {},
    ),
  ),
);

If you want to give a user the ability to attach photos to suggestions and save them to the gallery, you just need to implement the onUploadMultiplePhotos and onSaveToGallery methods.

You can also either use our standard theme or create your own:

theme: SuggestionsTheme().copyWith(...),

Admin functionality

Admin functionality allows you to edit any suggestion (e.g change its' status) and to leave comments from the 'Admin'.

A small demo:

https://raw.githubusercontent.com/flutterwtf/Suggest-a-Feature/master/example/assets/suggest_a_feature_admin.gif

In order to enable admin functionality, you should specify the adminSettings and set isAdmin to true:

SuggestionsPage(
  isAdmin: true,
  adminSettings: const AdminSettings(
    id: '3',
    username: 'Admin',
  ),
);

Localization

At the moment the package supports 3 languages: English, Russian and Ukrainian. English is the default language, it will be set in case the current locale is not supported by the SuggestionsLocalizations.delegate.

MaterialApp(
  home: SuggestionsPage(),
  localizationsDelegates: [
    SuggestionsLocalizations.delegate,
    GlobalMaterialLocalizations.delegate,
  ],
);
  • SuggestionsLocalizations - strings localization
  • GlobalMaterialLocalizations- date format localization

You also have to invoke initializeDateFormatting() before MaterialApp() widget creation in order to support date formatting.

initializeDateFormatting();
return MaterialApp(
  home: SuggestionsPage(),
);

Essential checks

For each suggestion and comment manipulation (updating or deleting) we recommend to check whether user has author rights to commit those actions. Author rights concept is as follows: the user who has created a suggestion/comment is the only one who can delete or update it. If it somehow happens that a user without author rights tries to delete/update a suggestion, an Exception will be thrown. onGetUserById() function in SuggestionsPage constructor will help you with this.

Theme

The package uses the material theme of your application.

Text styles used in package:

  • TextTheme.titleLarge
  • TextTheme.titleMedium
  • TextTheme.labelLarge
  • TextTheme.bodyMedium