fyral_comms 0.4.2
fyral_comms: ^0.4.2 copied to clipboard
Communication feature package for Fleet Glide Admin
0.4.2 #
- Configurable Back Button Visibility (
showBackButton&forceShowBackButton):- Added optional
showBackButtonandforceShowBackButtonproperties toConversationDetailPage. - Allows forcing the back button to be visible on tablet / landscape views (
showBackButton: trueorforceShowBackButton: true) or hidden entirely (showBackButton: false). - Preserves default responsive auto-behavior when left unset (
null). - Added fallback
Navigator.maybePop(context)when neitheronBackPressednoronBackcallback is explicitly supplied.
- Added optional
0.4.1 #
- Android 13+ & 14+ Predictive Back Configuration:
- Added
android:enableOnBackInvokedCallback="true"toAndroidManifest.xmlsetup documentation and example application to support predictive back navigation and prevent back gesture conflicts when usingwechat_assets_picker. - Added
READ_MEDIA_VISUAL_USER_SELECTEDpermission documentation for Android 14+ partial media picking.
- Added
- Documentation & Links:
- Fixed example repository links in
README.mdto use secure HTTPS URLs for pub.dev score compliance.
- Fixed example repository links in
0.4.0 #
- Unread Badge & Timestamp Contrast Refinement:
- Refined unread badge styling with a clean rounded design and solid background.
- Optimized timestamp text colors (
timeColor) for improved contrast across dark and light themes in both read and unread states.
0.3.9 #
- Conversation Card UI & Layout Overhaul (
conversationCard):- Restructured
conversationCardwith synchronized 2-row layout: Row 1 aligns Title and Timestamp on the exact same baseline, and Row 2 aligns Message Preview and Unread Count Badge. - Replaced static icon with automatic two-letter title initials (e.g.
"General Support"$\rightarrow$"GS") rendered in bold typography inside a 48×48 rounded squircle avatar container with soft gradient background and matching borders. - Added subtle ambient drop shadows (
blurRadius: 8), theme-adaptive dark mode colors, and increased vertical/horizontal padding for comfortable breathing room. - Added graceful empty message handling displaying an italicized "No messages yet" placeholder to prevent awkward vertical collapse.
- Refined unread badge styling with a clean rounded badge and optimized time text contrast colors for optimal legibility in both light and dark themes.
- Restructured
- Compact Broadcast Header Tile (
broadcastCard):- Streamlined top broadcast card into a dedicated compact single-line banner featuring the broadcast megaphone icon, title, and chevron.
- Exported
broadcastCardwidget incomms.dart.
- Viewport & Status Bar SafeArea Protection:
- Wrapped
CommsPagewithSafeAreato prevent content overlapping system notches and status bars.
- Wrapped
0.3.8 #
- ConversationShimmer RenderFlex Overflow Fix:
- Fixed right-side RenderFlex overflow in
ConversationShimmerby wrapping layout items inLayoutBuilderto dynamically compute available width constraints. - Accounted for avatar spacing (40px) and ListView padding when calculating maximum bubble widths.
- Wrapped shimmer message bubble containers in
FlexiblewithinRowlayouts to prevent overflow on narrow screens and constrained layouts. - Added widget test suite coverage for shimmer rendering across multiple screen dimensions (320px to 600px).
- Fixed right-side RenderFlex overflow in
0.3.7 #
- Broadcast Card at Top of Conversation List:
- Added customizable Broadcast card support at the top of the conversation list in
CommsPage. - Added
showBroadcast,broadcastTitle,broadcastMessage,broadcastTime,broadcastUnreadCount,broadcastIcon,broadcastIconColor,onBroadcastTap, andbroadcastWidgetproperties toCommsPage. - Added
leadingIconandleadingWidgetcustomization parameters toconversationCard. - Maintained full responsiveness, dark mode adaptability, unread badge indicators, and smooth scrolling across all screen sizes.
- Added customizable Broadcast card support at the top of the conversation list in
0.3.6 #
- Empty Conversation State Placeholder:
- Added an aesthetic empty state illustration with chat bubble icon (
Icons.chat_bubble_outline_rounded), title ("No messages yet"), and subtitle ("Send a message to start the conversation") when a conversation has no messages. - Added customizable
emptyPlaceholder,emptyTitle,emptySubtitle, andemptyIconparameters toConversationDetailPage.
- Added an aesthetic empty state illustration with chat bubble icon (
0.3.5 #
- Shimmer Skeleton Loading Effect (
ConversationShimmer):- Added
ConversationShimmerwidget featuring a smooth animated linear gradient sweep effect for message bubbles and avatars. - Added
isLoadingandshimmerPlaceholderproperties toConversationDetailPageto display shimmer skeletons during initial message loading.
- Added
- WhatsApp-Style Date Separators (
DateSeparatorBadge):- Added floating rounded capsule date separator badges (
DateSeparatorBadge) displaying"Today","Yesterday", or formatted calendar dates between message groups of different days. - Added
getDateTime,isSameDay, andformatDateSeparatorhelpers toMessageHelperswith robust UTC/local timezone handling. - Added
showDateSeparatorsflag (default:true) toConversationDetailPage.
- Added floating rounded capsule date separator badges (
- Scroll-to-Top Pagination (Load Earlier Messages):
- Added scroll listener to
ConversationDetailPageto automatically triggeronLoadMoreMessageswhen the user scrolls near the top of the chat history. - Added
isLoadingMore,hasMoreMessages, andscrollControllerproperties toConversationDetailPage. - Added top loading indicator pill with animated spinner (
"Loading earlier messages...") while fetching older messages.
- Added scroll listener to
- Public API Exports:
- Exported
ConversationShimmerandDateSeparatorBadgeincomms.dart.
- Exported
0.3.4 #
- Timestamp & Null-Safety Enhancements:
- Added null-safety check for
lastMessageinCommsPageconversation list tiles to prevent timestamp parsing on null objects and provide clean fallback formatting when a conversation has no messages.
- Added null-safety check for
0.3.3 #
- Public API Exports:
- Exported
conversation_card.dart(conversationCard) andmedia_grid.dart(MediaGrid) incomms.dartfor direct consumer usage.
- Exported
- Timestamp & Date Parsing Enhancements:
- Added
parseUtcDatehelper inCommsPagefor resilient UTC date parsing. - Updated
_formatLastMessageTimeto formatDateTimeobjects directly with proper local timezone conversion.
- Added
0.3.2 #
- Model & Unread Count Enhancements:
- Added
unreadCountfield toCommsGroupmodel with JSON serialization and deserialization (unread_count). - Updated
CommsPageconversation unread count calculation to gracefully fallback to group-levelunreadCount. - Added unit test coverage for
CommsGroupunread count serialization and deserialization.
- Added
0.3.1 #
- Dark Mode & Contrast Enhancements:
- Replaced hardcoded light grey app bar gradient in
ConversationDetailPagewith a dark-mode adaptive gradient (#0F172A). - Updated title/subtitle pill box background (
#1E293B), borders (Colors.white12), and text colors for dark mode readability. - Adapted back and search action button borders and backgrounds to theme dark mode.
- Added full dark mode color adaptation to
conversationCardlist tiles (background, borders, title, message text, and timestamps). - Enhanced
MessageBoxtext field styling and icon button colors for dark mode. - Updated reaction picker pop-up menus and reaction badges in
ReceivedBubbleandSentBubbleto adapt to dark mode.
- Replaced hardcoded light grey app bar gradient in
- Documentation Updates:
- Added comprehensive Platform & WeChat Asset Picker Setup guide in
README.mdcovering Android permissions (AndroidManifest.xml), iOS keys (Info.plist),flutter_localizationsconfiguration, and fallback behavior.
- Added comprehensive Platform & WeChat Asset Picker Setup guide in
0.3.0 #
- Fullscreen Media & Video Viewer (
FullscreenMediaViewer):- Added fullscreen media gallery viewer supporting both image and video attachments.
- Pinch-to-zoom and panning support with double-tap zoom toggle (1.0x <-> 2.5x).
- Dynamic
PageViewphysics resolution to prevent horizontal swipe conflicts while zoomed in. - Integrated video player with play/pause controls, tap-to-play gestures, and automatic URL resolution (network, file, assets).
- BlurHash Placeholder Loading:
- Integrated
flutter_blurhashpackage (^0.9.1). - Displays smooth blur hash placeholders (
BlurHash) during remote image fetching in both media grids and fullscreen viewers.
- Integrated
- Video Thumbnail Previews in Message Log:
- Added video thumbnail rendering in
MediaGridusing explicit thumbnail URLs (thumbnail_url,thumbnail,poster) or automatic first-frame video frame extraction. - Translucent circular play icon overlay for video attachments.
- Added video thumbnail rendering in
- Enhanced Domain Models:
- Extended
CommsMessageand addedCommsMessageResponse,CommsAttachment,CommsReadInfo, andCommsDeliveryInfofor comprehensive API response deserialization and serialization.
- Extended
0.2.1 #
- Media Picking & Callback Enhancements:
- Cleaned up
onMediaPickedcallback inConversationDetailPageandMessageBoxto returnList<File>. - Added
filesgetter (List<File> get files) toMediaPreviewResultfor seamless file object mapping.
- Cleaned up
- Mentions Overlay Robustness:
- Added bounds safety checks to text selection offset handling in
_onTextChanged()and_selectUser()to prevent substring indexing errors.
- Added bounds safety checks to text selection offset handling in
- Test Suite Maintenance:
- Updated
widget_test.dartsuite to align with revisedonMediaPickedparameter contracts.
- Updated
0.2.0 #
- WhatsApp-Style Media Preview (
MediaPreviewPage):- Fullscreen interactive image preview with pinch-to-zoom support (
InteractiveViewer). - Built-in video player integration with first-frame thumbnail rendering, play/pause controls, and video indicator badges.
- Horizontal multi-media swipe navigation (
PageView) supporting batch media selection. - Bottom thumbnail gallery strip with live video frame thumbnail rendering for quick asset switching.
- WhatsApp-style caption input bar with embedded Emoji Picker (
emojiPicker) drawer and action buttons. - Upward action popup menu (
Camera&Gallery) for adding additional photos and videos on-the-fly. - Delete action (
Icons.delete_outline_rounded) in the top bar to remove individual items from the preview stack.
- Fullscreen interactive image preview with pinch-to-zoom support (
- Attachment Picker Enhancements:
- Added PopupMenu button to
MessageBoxwith Camera (ImagePicker) and Gallery (wechat_assets_picker/pickMultipleMedia) choices. - Added runtime permission checks via
PhotoManager.requestPermissionExtend()for Android 13+ / 14+ compatibility. - Applied theme-adaptive popup styling using
Theme.of(context).cardColorand primary theme accent icons.
- Added PopupMenu button to
- Build Tooling & Code Quality:
- Resolved all
use_build_context_synchronouslylint warnings across async gaps usingmountedchecks. - Upgraded Android Gradle Plugin (AGP) to
8.11.1and Kotlin Gradle Plugin (KGP) to2.2.20in example app.
- Resolved all
0.1.0 #
- Message Separation by User ID:
- Added
userIdcomparison inConversationDetailPageto dynamically determine if a message belongs to the current user. - Added
getSenderIdhelper inMessageHelpersto extract sender IDs from diverse message data payloads. - Updated example app configuration to pass user ID to details page.
- Added
0.0.9 #
- Asset Optimization:
- Removed unused
assets/traffic.pngto reduce overall package bundle size. - Replaced demo data asset image reference in
ConversationDetailPagewith a high-resolution remote network image. - Updated widget test suites to load network attachments.
- Removed unused
0.0.8 #
- Scroll & Viewport Behavior:
- Enabled reversed list view (
reverse: true) inConversationDetailPage. - Automatically positions scroll offset to focus on the latest messages at the bottom of the viewport upon entering the screen.
- Corrected list item padding bounds below the app bar.
- Enabled reversed list view (
0.0.7 #
- Timestamp Formatting:
- Added
intlpackage dependency. - Implemented
_formatLastMessageTimehelper inCommsPageto format conversation card timestamps dynamically:- Today →
12:45 PM - Yesterday →
Yesterday - Within last 7 days → Weekday name (e.g.
Monday) - Older →
dd/MM/yyyy(e.g.18/08/2026)
- Today →
- Added
0.0.6 #
- Strongly Typed Models & User Unread Count:
- Added domain model classes
CommsGroup,CommsParticipant,CommsUser,CommsRole, andCommsMessagewith built-in JSON deserialization and serialization support. - Added
currentUserIdtoCommsPageto dynamically look up and display the unread count matching the current logged-in participant.
- Added domain model classes
- Mentions & WhatsApp-style Replies:
- Redesigned reply preview container to integrate seamlessly above the message input field with matching borders and dismiss controls.
- Added dynamic mentions suggestions overlay triggered by typing
@. - Added RichText mention styling in chat bubbles and inline styling inside the message input box.
- Exposed
mentionableUsersparameter onConversationDetailPageandMessageBox.
0.0.4 #
- Layout & Rendering Fixes:
- Wrapped
CommsPagein aMaterialwidget to resolve typography fallback styling issues. - Fixed empty state logic in
CommsPageto correctly display the "No conversations found" placeholder when the conversations list is null or empty. - Cleaned up analyzer warnings by removing unused local variables in
received_bubble.dart.
- Wrapped
0.0.3 #
- Hybrid State Management Pattern:
- Refactored
ConversationDetailPageto support both Controlled (stateless) and Uncontrolled (stateful fallback) usage patterns. - Added
addDemoDataconfiguration flag (default:true) to allow turning off default mock messages. - Added
showAppBarconfiguration flag (default:true) to allow hiding the topAppBarwhen embedding the page in custom layouts.
- Refactored
0.0.2 #
- Released communication feature page with basic stateful navigation and mock data.
0.0.1 #
- Initial release.