fyral_comms 0.4.2 copy "fyral_comms: ^0.4.2" to clipboard
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 showBackButton and forceShowBackButton properties to ConversationDetailPage.
    • Allows forcing the back button to be visible on tablet / landscape views (showBackButton: true or forceShowBackButton: true) or hidden entirely (showBackButton: false).
    • Preserves default responsive auto-behavior when left unset (null).
    • Added fallback Navigator.maybePop(context) when neither onBackPressed nor onBack callback is explicitly supplied.

0.4.1 #

  • Android 13+ & 14+ Predictive Back Configuration:
    • Added android:enableOnBackInvokedCallback="true" to AndroidManifest.xml setup documentation and example application to support predictive back navigation and prevent back gesture conflicts when using wechat_assets_picker.
    • Added READ_MEDIA_VISUAL_USER_SELECTED permission documentation for Android 14+ partial media picking.
  • Documentation & Links:
    • Fixed example repository links in README.md to use secure HTTPS URLs for pub.dev score compliance.

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 conversationCard with 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.
  • 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 broadcastCard widget in comms.dart.
  • Viewport & Status Bar SafeArea Protection:
    • Wrapped CommsPage with SafeArea to prevent content overlapping system notches and status bars.

0.3.8 #

  • ConversationShimmer RenderFlex Overflow Fix:
    • Fixed right-side RenderFlex overflow in ConversationShimmer by wrapping layout items in LayoutBuilder to dynamically compute available width constraints.
    • Accounted for avatar spacing (40px) and ListView padding when calculating maximum bubble widths.
    • Wrapped shimmer message bubble containers in Flexible within Row layouts to prevent overflow on narrow screens and constrained layouts.
    • Added widget test suite coverage for shimmer rendering across multiple screen dimensions (320px to 600px).

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, and broadcastWidget properties to CommsPage.
    • Added leadingIcon and leadingWidget customization parameters to conversationCard.
    • Maintained full responsiveness, dark mode adaptability, unread badge indicators, and smooth scrolling across all screen sizes.

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, and emptyIcon parameters to ConversationDetailPage.

0.3.5 #

  • Shimmer Skeleton Loading Effect (ConversationShimmer):
    • Added ConversationShimmer widget featuring a smooth animated linear gradient sweep effect for message bubbles and avatars.
    • Added isLoading and shimmerPlaceholder properties to ConversationDetailPage to display shimmer skeletons during initial message loading.
  • 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, and formatDateSeparator helpers to MessageHelpers with robust UTC/local timezone handling.
    • Added showDateSeparators flag (default: true) to ConversationDetailPage.
  • Scroll-to-Top Pagination (Load Earlier Messages):
    • Added scroll listener to ConversationDetailPage to automatically trigger onLoadMoreMessages when the user scrolls near the top of the chat history.
    • Added isLoadingMore, hasMoreMessages, and scrollController properties to ConversationDetailPage.
    • Added top loading indicator pill with animated spinner ("Loading earlier messages...") while fetching older messages.
  • Public API Exports:
    • Exported ConversationShimmer and DateSeparatorBadge in comms.dart.

0.3.4 #

  • Timestamp & Null-Safety Enhancements:
    • Added null-safety check for lastMessage in CommsPage conversation list tiles to prevent timestamp parsing on null objects and provide clean fallback formatting when a conversation has no messages.

0.3.3 #

  • Public API Exports:
    • Exported conversation_card.dart (conversationCard) and media_grid.dart (MediaGrid) in comms.dart for direct consumer usage.
  • Timestamp & Date Parsing Enhancements:
    • Added parseUtcDate helper in CommsPage for resilient UTC date parsing.
    • Updated _formatLastMessageTime to format DateTime objects directly with proper local timezone conversion.

0.3.2 #

  • Model & Unread Count Enhancements:
    • Added unreadCount field to CommsGroup model with JSON serialization and deserialization (unread_count).
    • Updated CommsPage conversation unread count calculation to gracefully fallback to group-level unreadCount.
    • Added unit test coverage for CommsGroup unread count serialization and deserialization.

0.3.1 #

  • Dark Mode & Contrast Enhancements:
    • Replaced hardcoded light grey app bar gradient in ConversationDetailPage with 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 conversationCard list tiles (background, borders, title, message text, and timestamps).
    • Enhanced MessageBox text field styling and icon button colors for dark mode.
    • Updated reaction picker pop-up menus and reaction badges in ReceivedBubble and SentBubble to adapt to dark mode.
  • Documentation Updates:
    • Added comprehensive Platform & WeChat Asset Picker Setup guide in README.md covering Android permissions (AndroidManifest.xml), iOS keys (Info.plist), flutter_localizations configuration, and fallback behavior.

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 PageView physics 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_blurhash package (^0.9.1).
    • Displays smooth blur hash placeholders (BlurHash) during remote image fetching in both media grids and fullscreen viewers.
  • Video Thumbnail Previews in Message Log:
    • Added video thumbnail rendering in MediaGrid using explicit thumbnail URLs (thumbnail_url, thumbnail, poster) or automatic first-frame video frame extraction.
    • Translucent circular play icon overlay for video attachments.
  • Enhanced Domain Models:
    • Extended CommsMessage and added CommsMessageResponse, CommsAttachment, CommsReadInfo, and CommsDeliveryInfo for comprehensive API response deserialization and serialization.

0.2.1 #

  • Media Picking & Callback Enhancements:
    • Cleaned up onMediaPicked callback in ConversationDetailPage and MessageBox to return List<File>.
    • Added files getter (List<File> get files) to MediaPreviewResult for seamless file object mapping.
  • Mentions Overlay Robustness:
    • Added bounds safety checks to text selection offset handling in _onTextChanged() and _selectUser() to prevent substring indexing errors.
  • Test Suite Maintenance:
    • Updated widget_test.dart suite to align with revised onMediaPicked parameter contracts.

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.
  • Attachment Picker Enhancements:
    • Added PopupMenu button to MessageBox with 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).cardColor and primary theme accent icons.
  • Build Tooling & Code Quality:
    • Resolved all use_build_context_synchronously lint warnings across async gaps using mounted checks.
    • Upgraded Android Gradle Plugin (AGP) to 8.11.1 and Kotlin Gradle Plugin (KGP) to 2.2.20 in example app.

0.1.0 #

  • Message Separation by User ID:
    • Added userId comparison in ConversationDetailPage to dynamically determine if a message belongs to the current user.
    • Added getSenderId helper in MessageHelpers to extract sender IDs from diverse message data payloads.
    • Updated example app configuration to pass user ID to details page.

0.0.9 #

  • Asset Optimization:
    • Removed unused assets/traffic.png to reduce overall package bundle size.
    • Replaced demo data asset image reference in ConversationDetailPage with a high-resolution remote network image.
    • Updated widget test suites to load network attachments.

0.0.8 #

  • Scroll & Viewport Behavior:
    • Enabled reversed list view (reverse: true) in ConversationDetailPage.
    • 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.

0.0.7 #

  • Timestamp Formatting:
    • Added intl package dependency.
    • Implemented _formatLastMessageTime helper in CommsPage to 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)

0.0.6 #

  • Strongly Typed Models & User Unread Count:
    • Added domain model classes CommsGroup, CommsParticipant, CommsUser, CommsRole, and CommsMessage with built-in JSON deserialization and serialization support.
    • Added currentUserId to CommsPage to dynamically look up and display the unread count matching the current logged-in participant.
  • 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 mentionableUsers parameter on ConversationDetailPage and MessageBox.

0.0.4 #

  • Layout & Rendering Fixes:
    • Wrapped CommsPage in a Material widget to resolve typography fallback styling issues.
    • Fixed empty state logic in CommsPage to 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.

0.0.3 #

  • Hybrid State Management Pattern:
    • Refactored ConversationDetailPage to support both Controlled (stateless) and Uncontrolled (stateful fallback) usage patterns.
    • Added addDemoData configuration flag (default: true) to allow turning off default mock messages.
    • Added showAppBar configuration flag (default: true) to allow hiding the top AppBar when embedding the page in custom layouts.

0.0.2 #

  • Released communication feature page with basic stateful navigation and mock data.

0.0.1 #

  • Initial release.
1
likes
150
points
1.33k
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Communication feature package for Fleet Glide Admin

Repository (GitHub)

License

MIT (license)

Dependencies

animated_emoji, emoji_picker_flutter, flutter, flutter_blurhash, image_picker, intl, video_player, wechat_assets_picker

More

Packages that depend on fyral_comms