feedback_kit 0.2.0
feedback_kit: ^0.2.0 copied to clipboard
In-app feedback boards, voting and a public roadmap for Flutter. Auth-agnostic: bring your own identity via a FeedbackIdentityProvider, or let the built-in anonymous device identity handle it. Pairs w [...]
0.2.0 #
Screenshots, downvoting, and the app's own language.
- Language follows the operating system.
FeedbackStringsships full translations for 27 locales, and the client sends the resolved tag asAccept-Languageon every request — so the in-app strings, the board payload and the status mails all land in the same language.FeedbackConfig.localeforces one when the host app has its own switch. - Screenshots.
FeedbackConfig.imagePickeris a seam, not a dependency: the kit never pulls inimage_picker, because that would force its platform plugins and permission entries on every host app — most of which, like MyMovement, already have one. A three-line adapter is in the docs. Leave it null and the attach button simply does not appear. - Downvoting.
vote(postId, value: 1 | -1 | 0)replacesvote(postId, on: bool).FeedbackPost.voteCountis now the net score and may be negative where a board allows push-back;upvoteCountanddownvoteCountcarry the split.viewerHasVotedremains as a derived getter, so read-only callers keep compiling. - Rich content. Attachments and emoji reactions render on the post and list
views;
FeedbackAttachment.urlFrom(baseUrl)turns the service's path into a URL. - Custom submit forms. A board's own labels, categories and extra fields are rendered from its configuration — changing the form needs no app release. An unknown field type degrades to a text field rather than crashing.
Breaking #
vote(postId, on: bool)→vote(postId, value: int).VoteButtontakesviewerVote/onVoteinstead ofhasVoted/onPressed, plus a requiredstrings.PostTile,FeedbackSubmitScreen,FeedbackPostScreenandFeedbackRoadmapScreentake a requiredstrings. Callers usingFeedbackBoardScreen— the documented entry point — are unaffected: it supplies them.
Fixed #
- Attachment uploads went through a one-off HTTP client instead of the one passed to
FeedbackClient, silently bypassing a host app's proxy, certificate pinning or request logging for uploads only.
0.1.1 #
- New
FeedbackChangelogScreen, reachable fromFeedbackBoardScreenwhenever the board has its changelog enabled. The client and theChangelogEntrymodel shipped in 0.1.0, but nothing rendered them — and the board screen's documentation claimed a changelog view that did not exist. - Entries are sorted newest-first client-side and dated absolutely, with a relative hint only for the last week: a changelog is a record, and "vor 84 Tagen" rots in a screenshot.
- A board without a public changelog (the service answers 404) is presented as a configuration state, not as an error.
0.1.0 #
First release.
FeedbackClientover the platform Feedback service's public API: board config, paged posts, post detail with comments, voting, commenting, roadmap, changelog.- Two identity modes behind one seam.
AnonymousDeviceIdentitygenerates and persists a device token with no backend involved;CallbackIdentityProvidercarries a token your own backend signed with the board's key. The package never holds the signing key and never signs. - One transparent refresh-and-retry on an expired token, so a user is not told their session lapsed mid-tap.
- Typed failures (
FeedbackException.failure) so a signed-out visitor, a stale token and a rate limit can be told apart. - Screens:
FeedbackBoardScreen,FeedbackPostScreen,FeedbackSubmitScreen,FeedbackRoadmapScreen, plusPostTile/VoteButton/StatusChipfor hosts that want their own layout. - Optimistic voting that reverts on failure.
- Unknown status values from a newer service degrade to
openinstead of throwing.