flutter_chat_ui
Free and open-source chat SDK. Build fast, real-time apps and generative AI agents with a high-performance, customizable, cross-platform UI.
2.11.1
101K downloads/mo
#1132 most downloaded on pub.dev
flyerhq/flutter_chat_ui
What this package is like to depend on
Last release 8 months ago
11 Dec 2025
Release timing varies
gaps range from 8 days to 3 months
Nearly every release is documented
notes for 113 of 113 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
124 releases · first in 2020
5 releases in the last 12 months
see the full history below
Release timeline
124 releases · Aug 2020 to Dec 2025Releases
latest 60 of 124-
2.11.111 Dec 2025 -
2.11.006 Dec 2025Release notes
Open source →- FIX: handle null checks for message gesture callbacks in ChatMessage widget (#861). (0a7fe3dd)
- FIX: add required modifier to named params of onMessageTap, onMessageDoubleTap, onMessageLongPress. (8509a1b2)
- FEAT: sendOnEnter param for composer. (98ece404)
- FEAT: add onMessageSecondaryTap callback. (fcca65a5)
- FEAT: headerWidget should ignore horizontal padding. (14ca1b2d)
Release notes
Open source →- FIX: handle null checks for message gesture callbacks in ChatMessage widget (#861). (0a7fe3dd)
- FIX: add required modifier to named params of onMessageTap, onMessageDoubleTap, onMessageLongPress. (8509a1b2)
- FEAT: sendOnEnter param for composer. (98ece404)
- FEAT: add onMessageSecondaryTap callback. (fcca65a5)
- FEAT: headerWidget should ignore horizontal padding. (14ca1b2d)
-
2.10.006 Dec 2025Release notes
Open source →Update dependencies to latest, require min dart 3.8 and flutter 3.32. Migrate monorepo to pub workspaces.
2.9.2
- FIX: chat messages rebuilt after sending new message. (a17f3162)
2.9.1
Release notes
Open source → -
2.9.206 Dec 2025 -
2.9.109 Oct 2025Release notes
Open source → -
2.9.026 Jul 2025Release notes
Open source →This release introduces two-sided pagination. You can now load newer messages using the new
onStartReachedcallback, whileonEndReachedcontinues to work for older messages. For pagination to work correctly, messages should be inserted instantly, without animation.To allow this and offer more granular control, a new optional
animatedparameter has been added to all controller operations exceptupdate. This is not a breaking change, but if you'd like to use it, you can update your controller like so:insertMessage(Message message, {int? index}) // ❌ insertMessage(Message message, {int? index, bool animated = true}) // ✅ ChatOperation.insert(..., animated: animated) // add animated to insert operations insertAllMessages(List<Message> messages, {int? index}) // ❌ insertAllMessages(List<Message> messages, {int? index, bool animated = true}) // ✅ ChatOperation.insertAll(..., animated: animated) // add animated to insertAll operations removeMessage(Message message) // ❌ removeMessage(Message message, {bool animated = true}) // ✅ ChatOperation.remove(..., animated: animated) // add animated to remove operations setMessages(List<Message> messages) // ❌ setMessages(List<Message> messages, {bool animated = true}) // ✅ ChatOperation.set(..., animated: animated) // add animated to set operations
As an optional improvement, you can use this parameter to disable animations when clearing the chat, which is now the default behaviour in the example apps.
ChatOperation.set(messages, animated: messages.isEmpty ? false : animated) // inside the controller
⚠️ There is a small potential breaking change:
LoadMoreNotifierwas updated for two-sided loading. If you used a custom LoadMore widget and usedLoadMoreNotifierto measure its height, that logic has been removed as it was not used. Additionally, the internal property_isLoadingis now_isLoadingOlder, and_isLoadingNewerhas been added.2.8.1
- FIX: composer inputClearMode and fix custom editing controller. (b4872190)
Release notes
Open source →This release introduces two-sided pagination. You can now load newer messages using the new
onStartReachedcallback, whileonEndReachedcontinues to work for older messages. For pagination to work correctly, messages should be inserted instantly, without animation.To allow this and offer more granular control, a new optional
animatedparameter has been added to all controller operations exceptupdate. This is not a breaking change, but if you'd like to use it, you can update your controller like so:insertMessage(Message message, {int? index}) // ❌ insertMessage(Message message, {int? index, bool animated = true}) // ✅ ChatOperation.insert(..., animated: animated) // add animated to insert operations insertAllMessages(List<Message> messages, {int? index}) // ❌ insertAllMessages(List<Message> messages, {int? index, bool animated = true}) // ✅ ChatOperation.insertAll(..., animated: animated) // add animated to insertAll operations removeMessage(Message message) // ❌ removeMessage(Message message, {bool animated = true}) // ✅ ChatOperation.remove(..., animated: animated) // add animated to remove operations setMessages(List<Message> messages) // ❌ setMessages(List<Message> messages, {bool animated = true}) // ✅ ChatOperation.set(..., animated: animated) // add animated to set operationsAs an optional improvement, you can use this parameter to disable animations when clearing the chat, which is now the default behaviour in the example apps.
ChatOperation.set(messages, animated: messages.isEmpty ? false : animated) // inside the controller⚠️ There is a small potential breaking change:
LoadMoreNotifierwas updated for two-sided loading. If you used a custom LoadMore widget and usedLoadMoreNotifierto measure its height, that logic has been removed as it was not used. Additionally, the internal property_isLoadingis now_isLoadingOlder, and_isLoadingNewerhas been added. -
2.8.119 Jul 2025Release notes
Open source →- FIX: composer inputClearMode and fix custom editing controller. (b4872190)
-
2.8.019 Jul 2025Release notes
Open source → -
2.7.012 Jul 2025 -
2.6.207 Jul 2025Release notes
Open source →-
Use utf8 codec to parse chinese symbols
-
Update dependencies. Requires Dart >= 2.15.1.
-
-
2.6.129 Jun 2025 -
2.6.027 Jun 2025Release notes
Open source →⚠️ Breaking Changes ⚠️
onMessageTapandonMessageLongPressaddedBuildContextas a first parameter, so if you had something like this:void _handleMessageLongPress( Message message, { int? index, LongPressStartDetails? details, })
replace it with this:
void _handleMessageLongPress( BuildContext context, Message message, { int? index, LongPressStartDetails? details, })
- FIX: scrollToIndex does not work when starting with an empty list #793. (1948c1f5)
- FEAT: add sendButtonVisibilityMode and allowEmptyMessage to the composer. (7a496607)
- FEAT: add method OnMessageDoubleTapCallback; add param BuildContext context for OnMessageTapCallback and OnMessageLongPressCallback (#817). (6fe68886)
2.5.3
- FIX: update dependencies. (a8ff8b57)
2.5.2
- Update a dependency to the latest release.
2.5.1
- FIX: re-enable composer blur. (791f7308)
Release notes
Open source →- FIX: scrollToIndex does not work when starting with an empty list #793. (1948c1f5)
- FEAT: add sendButtonVisibilityMode and allowEmptyMessage to the composer. (7a496607)
- FEAT: add method OnMessageDoubleTapCallback; add param BuildContext context for OnMessageTapCallback and OnMessageLongPressCallback (#817). (6fe68886)
Release notes
Open source →-
Updated dependencies (requires Dart >=2.14.0)
-
Fixed Android example. Thanks @rvndsngwn for reporting!
-
2.5.327 Jun 2025 -
2.5.209 Jun 2025 -
2.5.108 Jun 2025Release notes
Open source →Revert meta upgrade, because pub.dev is analyzing code with an old Flutter version
-
2.5.008 Jun 2025Release notes
Open source →- FIX: introduce status field back (#809). (1aadf874)
- FIX: prevent sending blank messages (#808). (6fbcfc73)
- FIX: perf improvements (#807). (71e6d690)
- FIX: allow to set a different color in Composer when not empty (#794). (788ca0c6)
- FEAT: time and status grouping same minute fix #764 (#792). (61c04002)
Release notes
Open source →- FIX: introduce status field back (#809). (1aadf874)
- FIX: prevent sending blank messages (#808). (6fbcfc73)
- FIX: perf improvements (#807). (71e6d690)
- FIX: allow to set a different color in Composer when not empty (#794). (788ca0c6)
- FEAT: time and status grouping same minute fix #764 (#792). (61c04002)
Release notes
Open source →-
Update to Flutter 2.5
-
Rename REGEX_EMAIL to regexEmail and REGEX_LINK to regexLink
-
2.4.008 Jun 2025Release notes
Open source →⚠️ Breaking Changes ⚠️
All message builders will also provide
isSentByMeandgroupStatusnow. Just pass{ required bool isSentByMe, MessageGroupStatus? groupStatus, }after the index param. It is fine not to use these fields if not needed.
Release notes
Open source → -
2.3.126 May 2025Release notes
Open source →⚠️ Breaking Changes ⚠️
Even though this is a patch release, it depends on
flutter_chat_core, which introduced a small breaking change. I realized I didn’t bumpflutter_chat_uito a new minor version before publishing - sorry about that!Fix is simple: if you have a custom ChatController, the
setoperation now requires a messages array.- If you were using named parameters like set(messages: messages), change it to: set(messages)
- If you previously used set() with no arguments, replace it with: set([])
-
2.3.022 May 2025Release notes
Open source →2.3.0
⚠️ Breaking Changes ⚠️
-
Renamed LinkPreview → LinkPreviewData
-
LinkPreview.imageUrl→LinkPreviewData.image.url -
Both
LinkPreviewData.image.widthandLinkPreviewData.image.heightare now required
2.2.4
- FIX: add physics param to the ChatAnimatedList(Reversed). (ede3a170)
- FIX: emptyChatList not clickable (#787). (88937baa)
2.2.3
2.2.2
2.2.1
- FIX: list rebuilding when keyboard opens/closes. (48e28e7e)
-
-
2.2.422 May 2025 -
2.2.319 May 2025 -
2.2.219 May 2025Release notes
Open source →Release notes
Open source →-
Fix completer that never completes and add corsProxy parameter. Thanks @wer-mathurin for the PR!
-
Export getPreviewData to allow you to create your own implementation of a link preview.
-
-
2.2.119 May 2025 -
2.2.017 May 2025Release notes
Open source →⚠️ Breaking Changes ⚠️
ChatAnimatedListRedesign:- Significantly overhauled for robust handling of asynchronous controller updates.
- The
updateoperation (ChatOperation.update) now requires theindexof the message to be updated.
- CRITICAL: When implementing custom
ChatControllers, you MUST now fetch the most up-to-date message instance from your data source before passing it toremoveorupdateoperations. The internal list now relies on the exact object reference. Failing to do so will lead to errors or unexpected behavior. (SeeInMemoryChatControllerfor an example of fetching the actual message before emittingChatOperation.removeorChatOperation.update).
✨ Key Enhancements & Fixes ✨
- Asynchronous Operations:
ChatAnimatedListnow uses an internal operation queue to serialize updates, preventing race conditions and resolving priorStreamOperationissues. - List Factorization: Common logic between normal and reversed
ChatAnimatedListinstances has been factorized, improving maintainability. - Bulk Insertions: Added
insertAllMessagestoChatControllerandChatAnimatedListfor efficient bulk message additions with animations. - Diffing & Stability:
ChatController'ssetMessagesnow uses an improvedDiffUtil(with move support), fixing "out of bounds" errors during complex list updates. - Data Consistency: The controller now fetches the latest message version before updates or deletions to ensure operations use current data.
- Bug Fixes:
- Testing: Introduced integration tests for
ChatAnimatedListto validate list operations and item positioning.
-
2.1.311 May 2025Release notes
Open source → -
2.1.211 May 2025 -
2.1.104 May 2025 -
2.1.003 May 2025Release notes
Open source →⚠️ Breaking Changes ⚠️
Chat controller methods have been renamed to avoid name conflicts with Riverpod.
-
insert->insertMessage -
update->updateMessage -
remove->removeMessage -
set->setMessages -
FEAT: rename chat controller methods. (dc1bf57d)
-
-
2.0.202 May 2025Release notes
Open source →-
Fix paddings for an empty preview data
-
Limit number of images parsed
-
Fix regex
-
-
2.0.102 May 2025 -
2.0.001 May 2025Release notes
Open source →- Version 2.0.0 is a major update where we completely rebuilt the library. This version focuses on better performance, more customization options, and improved stability. We have added many new features and improvements to make your experience better. For more details, check out our blog post: https://flyer.chat/blog/v2-announcement/ 🚀
Release notes
Open source →- BREAKING : onPreviewDataFetched and previewData are now required. In the previous version, a link preview used on a ListView resulted in a fetch call every time the preview was appearing on a screen.
-
2.0.0-dev.1101 May 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
- Enhanced pagination functionality for the
ChatAnimatedListwidget. If you utilize thepaginationThresholdparameter, please refer to the comments in theChatAnimatedListwidget implementation for detailed guidance. - Updated the
Messagemodel to renameparentIdtoreplyToMessageId - The
createdAtfield is now optional in the message model - The
sendingfield has been removed from the message model; instead, you can setsending: truein the metadata of the Message model to achieve the same functionality. - The
isOnlyEmojiproperty has been removed from the text message model; to indicate that a message contains only emojis, useisOnlyEmoji: truein the metadata of the text message. - The
firstNameandlastNamefields in theUsermodel have been consolidated into a singlenamefield for improved simplicity. - The default sentinel values that previously allowed users to set specific properties to
nullhave been removed. Instead, please useColors.transparent,BorderRadius.zero, orTextStyle()to achieve the desired effect. Passingnullwill now use the standard configuration.
⚠️ New Features ⚠️
- Added a
headerWidgetto theChatMessagewidget, enabling the display of a custom header for each message. You have the flexibility to control the header's position; wrap it with aCenterwidget for centering. - Introduced new parameters:
sentMessageColumnAlignment,receivedMessageColumnAlignment,sentMessageRowAlignment, andreceivedMessageRowAlignmentfor theChatMessagewidget. These allow for precise control over the positioning ofleadingWidget,trailingWidget,topWidget, andbottomWidget. Ensure correct defaults are set for proper alignment, especially when using thetopWidget. - Introduced
TextStreamMessagetype to support text streaming - Added
textStreamMessageBuilderto theBuildersclass to support text streaming UI widget
Other changes
- Introduced
MessageIDandUserIDtypedefs to provide clearer context, while maintaining their underlying type asStrings - Do not show status for received messages
- Added example for text streaming
- Enhanced pagination functionality for the
-
2.0.0-dev.1020 Apr 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
- Rename
ChatInputtoComposer - Rename
ChatInputHeightNotifiertoComposerHeightNotifier - Rename
inputBuildertocomposerBuilder
- Rename
-
2.0.0-dev.906 Apr 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
- Requires Freezed 3.0.0
- Replace
statusfield with a computed getter that determines message state based on lifecycle timestamps (createdAt,deletedAt,sending,failedAt,sentAt,deliveredAt,seenAt,updatedAt). This enables granular message history tracking and status transitions, matching the behavior of popular chat applications. - Rename
overlaytohasOverlayinImageMessage
Other changes
- Downgrade
intlpackage version for better compatibility with other Flutter packages - Added
FileMessagesupport to the example project - Migrated web storage implementation from
indexed_dbtoidb_shimfor improved cross-platform compatibility and better performance
-
2.0.0-dev.825 Mar 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
- Package requires
intlpackage for date/time formatting
⚠️ New features ⚠️
- Added support for long press actions on messages with customizable callback
- Added system message for displaying system notifications and events in chat
- Added examples demonstrating both long press handling and system messages
- Added message status indicators (delivered, error, seen, sending, sent)
- Added message timestamps with customizable format, position
- Package requires
-
2.0.0-dev.716 Mar 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
- Changed dependency from
flutter_markdowntogpt_markdownfor theFlyerChatTextMessageclass onMessageTapcallback now includes message index and tap up details - updated parameters to(Message item, {int? index, TapUpDetails? details})- Added more customization options to
ChatInput, with default capitalization set to sentences - Changed default behavior of Enter key in
ChatInputto create a newline instead of sending message- To send message on Enter, set
textInputAction: TextInputAction.sendwhen configuringChatInputthrough builders - See
local.dartexample for how to use builders to customize input behavior
- To send message on Enter, set
⚠️ New features ⚠️
- Add
ScrollToMessageMixinto enable programmatic scrolling in chat list:scrollToMessage(messageId): Scrolls to a specific message by IDscrollToIndex(index): Scrolls to a message at a specific index- Both methods support customizable animation duration, curve, alignment and offset
- Can be used directly through any
ChatControllerinstance - See the pagination example in the example project for usage details
- Add validation to prevent duplicate message IDs
- Added support for sending messages using Shift+Enter keyboard shortcut in ChatInput
🐛 Bug Fixes
- Fixed flickering in avatar widget by implementing a user cache with LRU eviction strategy, allowing synchronous access to recently resolved user data
- Changed dependency from
-
2.0.0-dev.618 Feb 2025 pre-releaseRelease notes
Open source →⚠️ Breaking changes ⚠️
- Require Flutter 3.29 and Dart 3.7
🐛 Bug Fixes
- Temporarily disabled blur effect for chat input due to a crash in Flutter 3.29 (will be re-enabled once fix is available in stable)
- Fixed a warning that occurred when removing all messages simultaneously
-
2.0.0-dev.516 Feb 2025 pre-releaseRelease notes
Open source →⚠️ Breaking changes ⚠️
- Changed signature of
chatMessageBuilderto includeisRemovedandgroupStatusparameters. - Changed
imageUrltoimageSourcefor theUsermodel. Change is necessary to show that not only remote URLs are supported but also local assets. messageGroupingTimeoutInSecondsis now set viachatAnimatedListBuilder.
⚠️ New features ⚠️
- Add
hintTextto theChatInputwidget. - Added avatar support. Check local example for details.
chatMessageBuildernow returnsisRemovedandgroupStatusparameters. Group status returns information about message's position in the group.isRemovedistrueif message is removed.- Added
leadingWidgetandtrailingWidgetto theChatMessagewidget.
- Changed signature of
-
2.0.0-dev.404 Feb 2025 pre-releaseRelease notes
Open source →⚠️ Breaking Changes ⚠️
👥 User Management:
- Replaced
userparameter withcurrentUserId(String) andresolveUserfunction - Users are now referenced by ID, with async user data resolution through
resolveUser
⚙️ API Changes:
- Renamed
ChatInputHeightNotifier.updateHeight()tosetHeight() - Scroll controller management moved to individual list widgets that you can render via
builders:chatAnimatedListBuilder: ... return ChatAnimatedList(scrollController: _scrollController) - Text editing controller now configured through
ChatInputwidget
🔄 Core Changes:
author(typeUser) is replaced withauthorId(typeString) for simpler user management- All
DateTimeproperties now use milliseconds instead of microseconds for JSON serialization
🎨 Theme Simplification: Theme has been streamlined to 3 key parameters:
colors- Uses Material 3 semantic names (e.g.primary,onPrimary,secondary) making it easy to apply color schemestypography- Follows Flutter'sTextThemesemantic naming conventionsshape- Controls border radius of all messages (rounded vs square messages)
✨ New Features:
👨💻 Chat Experience:
- Added typing indicator support
- Background image customization
- Improved scroll-to-bottom performance
📜 List Behavior Controls:
shouldScrollToEndWhenSendingMessage: Auto-scroll on message sendshouldScrollToEndWhenAtBottom: Auto-scroll when at bottominitialScrollToEndMode: Controls initial scroll behavior for non-reversed list. Because list is not reversed, you must scroll to the end to see latest messages. Available options:none: No automatic scrolling, do nothinganimate: Smooth scroll to endjump: Instant scroll to end (wrong position or UI jumps are expected since Flutter does not know exact size of the list)
🎯 Improvements:
- Improved AI agent scrolling behavior example with message pinned to the top of the viewport
- Unified API between reversed and non-reversed lists
- Added pagination example
- Replaced
-
2.0.0-dev.302 Jan 2025 pre-releaseRelease notes
Open source →⚠️ Contains breaking changes ⚠️
- 🎉 Emoji-only messages: added support for text messages containing only emojis, displayed without a bubble.
- 🧩 Message grouping: added support for grouping messages for a cleaner chat display.
- 🐛 Bug fix: fixed an issue where timeouts were not being cleared properly.
- 🔧 Chat builders: chat message builders now include the message index in their parameters.
- 📱 Safe area: added safe area support for reversed lists.
-
2.0.0-dev.228 Dec 2024 pre-releaseRelease notes
Open source →⚠️ Contains breaking changes ⚠️
⚠️ Requires Flutter ^3.19 and Dart ^3.3 ⚠️
🖼️ API Example
- Added support for image uploads
- Added a web sockets connection status indicator with reconnection logic examples
🔗 cross-cache
- Added new methods:
delete(String key)– delete entriesupdateKey(String key, String newKey)– rename keys while keeping the data
CustomNetworkImageis nowCachedNetworkImageand has been moved to the cross-cache package- Exposed the
setmethod for better flexibility
💬 flutter-chat-core
- Added
customMessageBuilderfor building custom messages - Added
overlayparameter toImageMessage - Themes:
- Added
ImageMessageTheme(replacingimagePlaceholderColor) - Updated
InputTheme(addingtextFieldColor) - Updated
ScrollToBottomTheme - Updated
TextMessageTheme
- Added
- Added
UploadProgressMixinfor handling upload progress tracking
📝 flutter-chat-ui
- Automatically handles the safe area (optional, enabled by default)
- Scrolls content up when the keyboard is opened
- Added support for an action bar above the input field (with example)
- Exported
ChatInputHeightNotifier - Enhanced
ChatAnimatedListwith:topSliverandbottomSliverfor custom widgets at the top or bottom of the chat (both scrollable)
📸 flyer-chat-image-message
- Theme now derives from
imageMessageTheme - Added an upload progress indicator
- Fixed default constraints
- Added an optional overlay to images
-
2.0.0-dev.121 Oct 2024 pre-releaseRelease notes
Open source →- 🚀 Exciting pre-release of
v2! This version is a complete rewrite, focusing on extensibility, customizability, performance, and stability. 🛠️ - ⚠️ Some features are still in progress, so use with caution. However, I've aimed to make this version more practical for real-world applications. 💼
- 🌟 New examples include integrations with REST API and AI (Gemini), with more to come! 🤖
- 💻 Works seamlessly across all platforms. 📱🖥️
- 📚 Documentation and migration guide are in the works and will be available in the coming weeks.
- 🗓️ A public backlog for the new version is planned to keep everyone informed about upcoming features.
- 🔔 Stay tuned by following our GitHub for updates!
- 🙏 If you have a chance to test
v2or review the code, I'd love to hear your thoughts! 💬
- 🚀 Exciting pre-release of
-
1.6.1512 Aug 2024Release notes
Open source →- Last release of
v1andv2is replacing it on main branch soon. - Updated markdown matchers to be bold (double asterisk), italic (double underscore),
linethrough(double tilde) andcode(single backtick). - Removed PopScope since new api requires Flutter v3.22 and I want to still support older versions. Let me know if it introduces breaking behaviour.
- Added support for AssetImage (uri starts with
assets/). Thanks @thomers for the PR!
- Last release of
-
1.6.1409 Jun 2024Release notes
Open source →- While
v2is still in the works (unexpected blockers, see GitHub for progress) releasing a small patch update with improvements. - Added optional scroll
preferPositiontoscrollController.scrollToIndex. Thanks @chdo002 for the PR! - Removed
isComposingRangeValidcheck from the input to hopefully fix send button that does not appear. - Added
usesSafeAreaoption to theinputOptionsto be able to remove safe area backed inside the input.
- While
-
1.6.1319 May 2024Release notes
Open source →- While
v2is still in the works (unexpected blockers, see GitHub for progress) releasing a small patch update with improvements. - Potentially breaking: bumped dependencies, but I used ranges (>= and <) so don't expect any problems. Please raise an issue if some change breaks your project.
- Added support for overriding the
bubbleMarginproperty usingChatTheme. Thanks @ishchhabra for the PR! - Added localisation support to the typing indicator which was hardcoded english only previously. Thanks @longnh2k1 for raising the issue!
- While
-
1.6.1205 Feb 2024Release notes
Open source →- Remove
defaultBubbleMessagefrom thebubbleBuilderas it breaks compatibility. If you need this please use previous release, this is the only change here. Next should be v2.0.0 preview.
- Remove
-
1.6.1104 Feb 2024Release notes
Open source →- Small patch release while 2.0.0 is still in the works.
- Added
messageMaxWidthto the theme. Thanks @bobz392 for the PR! - Added
isLeftStatusto display status on the left side of the message. Thanks @hndrr for the PR! - Added localisation for Persian language (fa locale). Thanks @xclud for the PR!
- Added default message to the
bubbleBuilder. Thanks @asoap for the PR! - Added
messageWidthRatioto the chat. Thanks @elihaialgoaitech for the PR! - Added
customTypingWidget,customTypingIndicatorBuilder,typingWidgetBuilderandmultiUserTextBuilderto theTypingIndicatorOptions. Thanks @phamconganh for the PR!
-
1.6.1009 Nov 2023Release notes
Open source →- Possibly last release before 2.0.0, which will be a complete re-write focused on extensibility, customizability, performance and stability.
- Fixed repaint if type indicator is not used. Thanks @mozomig for the PR!
- Added ability to highlight message when scrolling to it. Thanks @SergeySor for the PR!
- Added more theming to the text input. Thanks @claudius-kienle for the PR!
- Fixed an exception when user exiting the chat. Thanks @elihaialgoaitech for the PR!
- Fixed input bug for the Japanese language. Thanks @okano4413 for the PR!
- Added
slidableMessageBuilder. Thanks @leeyisoft for the PR! - Matchers are now reusable and used in system message as well. Thanks @provokateurin for the PR!
avatarBuildernow provides whole user object. Thanks @kahyoongho for the PR!- Added semantics for the send button, useful in e2e tests. Thanks @GustekDev for the PR!
-
1.6.909 Jul 2023 -
1.6.817 May 2023Release notes
Open source →- Downgrade
intlto make it compatible with latest Flutter - Add
autofocusto theInputOptions. Thanks @josefwilhelm for the PR!
- Downgrade
-
1.6.716 May 2023Release notes
Open source →- BREAKING CHANGE:
nameBuildernow passes the whole user class, instead of just an id. Thanks @vintage for the PR! - Add typing indicator. See
typingIndicatorOptions. Thanks @gtalha07 for the PR! Huge one! - Add
imageProviderBuilder. Thanks @marinkobabic for the PR! - Add
autocorrectandenableSuggestionsto theInputOptions. By default, both values will be true. Thanks @g0dzillaa for the PR! - Add
keyboardTypeto theInputOptions. Thanks @Gramatton for the PR! - Add Swedish localization. Thanks @OlleEkberg for the PR!
- Add Finnish localization. Thanks @tuoku for the PR!
- Update dependencies. Requires Dart >= 2.19.0.
- BREAKING CHANGE:
-
1.6.629 Oct 2022Release notes
Open source →- Add
audioMessageBuilder(no default implementation yet). Thanks @marinkobabic for the PR! - Add
videoMessageBuilder(no default implementation yet). - Add
SystemMessageandsystemMessageBuilder. Thanks @felixgabler for the PR! - Add
dateIsUtcto use UTC time for parsing dates inside the chat. Thanks @marinkobabic for the PR! - Fix unnecessary scrolls to the bottom. Thanks @MaddinMade for the PR!
- Add custom text matchers to the
TextMessageOptions. Thanks @jld3103 for the PR! - Add
listBottomWidget. Thanks @MaddinMade for the PR! - Fix scroll to unread when no unread messages exist. Thans @jld3103 for the PR!
- Add
useTopSafeAreaInsetto theChatwidget, by default enabled on mobile platforms. Use it to disable top safe area inset. Thanks @jld3103 for reporting! - Fix PatternStyle regexes. Thanks @Mayb3Nots for reporting!
- Update dependencies. Requires Dart >= 2.18.0.
- Add
-
1.6.502 Oct 2022Release notes
Open source →- BREAKING CHANGE:
PreviewTapOptions->TextMessageOptions - BREAKING CHANGE:
isTextMessageTextSelectable->TextMessageOptions.isTextSelectable - Add unread messages banner and scroll to the first unread. Thanks @felixgabler for the PR!
- Fix every message re-render on new message added. Thanks @otto-dev for the PR!
- Refactor code to make Flyer chat more accessible for contributions. Thanks @felixgabler for the PR!
- Add
imageHeaders. Allows to pass headers to all images used in the chat. Thanks @marinkobabic for the PR! - Update to Flutter 3.3.3
- BREAKING CHANGE:
-
1.6.424 Jul 2022Release notes
Open source →- BREAKING CHANGE: Add
InputOptions.onTextChanged,onTextFieldTapandsendButtonVisibilityModeare now underInputOptionsclass, just move the same values toinputOptions: InputOptions(). - Add
inputClearModetoInputOptions. Allows you to disable automatic text field clear on submit. - Add
textEditingControllertoInputOptions. Allows you to provide a custom editing contoller, but preferably useInputTextFieldControllerwe export from the library, if you want to use it to programmatically clear text field or similar. - Add
keyboardDismissBehavior. - Improve image gallery - code optimizations and close button fix. Thanks @felixgabler for the PR!
- Fix input container changing its size. Thanks @joj3000 for the PR!
- Fix enter key not moving text to a new line on web. Thanks @UmairSaqibBhutta for reporting!
- Add
TextMessageOptions. Thanks @felixgabler for the PR! - Update dependencies
- BREAKING CHANGE: Add
-
1.6.326 Jun 2022Release notes
Open source →- Added an option to align sent bubbles to the right or left for RTL languages. Thanks @Faaatman for reporting! Use
bubbleRtlAlignment. - Add
customStatusBuilder. Thanks @skllll06 for the PR!
- Added an option to align sent bubbles to the right or left for RTL languages. Thanks @Faaatman for reporting! Use
-
1.6.219 Jun 2022Release notes
Open source →- Code refactor
- Update documentation about opening files
- Fixes RTL layout. Thanks @Yahllil for reporting!
-
1.6.114 Jun 2022Release notes
Open source →- Add bold, italic, strikethrough & code style to the input. Thanks @hareshgediya for the PR!
- Add user agent option for preview data fetching. Thanks @felixgabler for the PR!
-
1.6.013 Jun 2022Release notes
Open source →- BREAKING CHANGE:
copyWithon messages works differently (keeping previous values unless set to null), and sometimes casting to a specific message type is required. Please check your codebase if you're using it. Thanks! - Update to Flutter 3. Thanks @felixgabler for the PR!
- Fix link preview open link. Thanks @felixgabler for the PR!
- BREAKING CHANGE:
-
1.5.817 Apr 2022Release notes
Open source →- Fix emoji messages. Thanks @felixgabler for the PR!
- Add loading spinner support for the file message. Thanks @felixgabler for the PR!
- Include safe area insets inside chat itself. No need to wrap in
SafeAreaanymore. Thanks @AdrKacz for reporting!
-
1.5.711 Apr 2022Release notes
Open source →- Add scroller controller as a parameter. Thanks @Faaatman for the PR!
- Make attachment button margin configurable. Thanks @felixgabler for the PR!
- Add
avatarBuilderandnameBuildermethods to resolve user updates and render correct avatars and names. Thanks @dariuspo and @felixgabler for the PR! - Fix broken text paddings. Thanks @AdrKacz for reporting!
- Update dependencies