octopus_sdk_flutter 1.11.0 copy "octopus_sdk_flutter: ^1.11.0" to clipboard
octopus_sdk_flutter: ^1.11.0 copied to clipboard

Flutter plugin for Octopus Community SDK

1.11.0 #

New Features #

  • Push notification
  • syncFollowGroups: batch follow/unfollow groups in one round-trip via OctopusSDK().syncFollowGroups([...]). Returns per-action SyncFollowGroupResult with a typed SyncFollowGroupStatus (with unknownError fallback for future native variants). RPC-level failures surface as PlatformException with codes not_connected, no_network, server, or other.
  • Typed Dart OctopusEvent / Screen classes for new 1.11 events: GroupFollowingChangedEvent, MainFeedScreen, GroupsScreen, GroupDetailScreen (with GroupDetailSource enum: bridge / community / unknown).

Bug Fixes #

  • ProfileField.picture was silently dropped from appManagedFields: the Dart side serialized it as 'AVATAR', but both native bridges only recognize 'PICTURE' and silently dropped the rest. Customers who initialized with appManagedFields: [..., ProfileField.picture] had the field never reach the native SDK, so users could still edit their profile picture inside the Octopus UI. Wire format is now correct (PICTURE). Customers using ProfileField.picture should re-test their profile flows — pictures will now be blocked in the Octopus UI and routed through onModifyUser('PICTURE') as documented.

Dependencies #

  • Android Octopus SDK: 1.9.0 → 1.11.0
  • iOS Octopus SDK: 1.9.0 → 1.11.0

1.9.1 #

Bug Fixes #

  • Late subscriber replay: notSeenNotificationsCount and hasAccessToCommunity streams now cache the latest native emission so that Dart listeners attached after initialize() don't miss the initial value
  • screenDisplayed event parsing: Fixed type '_Map<Object?, Object?>' is not a subtype of type 'Map<String, dynamic>' crash when receiving screenDisplayed events

Example App #

  • Load logo from bundled asset instead of hardcoded base64 string
  • Enable custom logo display (logoBase64)
  • Set ProfileField.nickname as app-managed field
  • Remove hardcoded navBarTitle from OctopusHomeScreen

1.9.0 #

New Features #

  • Notification Badge Count: Stream<int> notSeenNotificationsCount for reactive badge updates, updateNotSeenNotificationsCount() to force refresh
  • Community Access / A/B Testing: Stream<bool> hasAccessToCommunity for reactive access state, overrideCommunityAccess(bool) to override cohort, trackCommunityAccess(bool) for analytics
  • URL Interception: onNavigateToUrl callback on OctopusHomeScreen with UrlOpeningStrategy enum (handledByApp / handledByOctopus)
  • Locale Override: overrideDefaultLocale(Locale?) to override the SDK UI language (e.g. Locale('fr'), Locale('en', 'US'), or null to reset)
  • Custom Analytics: trackCustomEvent(String name, Map<String, String> properties) to send custom events to Octopus analytics
  • SDK Events: Stream<OctopusEvent> events — typed event stream covering 20 event types (content creation/deletion, reactions, polls, gamification, screen navigation, clicks, profile changes, sessions). Use OctopusSDK.events.listen(...) with Dart pattern matching

Breaking Changes #

See MIGRATION_1_9.md for details

  • appManagedFields parameter changed from List<String>? to List<ProfileField>? — use ProfileField.nickname, .picture, .bio instead of raw strings
  • Renamed OctopusView to OctopusHomeScreen
  • Renamed OctopusSdkFlutter to OctopusSDK
  • Renamed initializeOctopusSDK() to initialize()
  • Renamed showOctopusHome() to showOctopusHomeScreen()
  • Renamed OctopusSdkFlutterPlugin to OctopusSDKFlutterPlugin (internal)
  • Renamed OctopusSdkFlutterPlatform to OctopusSDKPlatform (internal)
  • Renamed MethodChannelOctopusSdkFlutter to OctopusSDKMethodChannel (internal)
  • Renamed OctopusComposeWidget to OctopusHomeScreen (Android internal)
  • Removed legacy showNativeUI() and closeNativeUI() methods

Dependencies #

  • Android Octopus SDK updated to 1.9.0
  • iOS Octopus SDK updated to 1.9.0

Improvements #

  • Simplified callback mechanism: replaced dual callback registry with single event stream
  • SDK now initializes automatically on app start (removed manual "Init" button in example)
  • Added user connection state persistence between app restarts
  • Auto-reconnect user after SDK init if previously connected

Example App #

  • Display unread notification count and community access state in SDK Status panel
  • Consolidated connect/disconnect into single conditional button
  • Added SafeArea to Configuration tab for edge-to-edge display fix
  • Shortened toast durations
  • Community tab now recreates on each tap (removed IndexedStack)
  • Moved secrets (API key, JWT token) to gitignored secrets.dart file

1.7.1 #

  • Moving Android Octopus SDK to 1.7.2 (fixes Protobuf dependencies conflicts with Firebase)
  • Moving iOS Octopus SDK to 1.7.2 (fixes Cocoapods package name conflicts between GRPC-Swift and GRPC-Core)

1.7.0 #

  • First public release aligned with Octopus native SDK 1.7 on iOS and Android.
  • Added SSO (initializeOctopusSDK)
  • Added user session helpers: connectUser, connectUserWithTokenProvider, and disconnectUser.
  • Introduced embedded OctopusView widget with callbacks for login navigation, profile edits, and back events.
  • Added theme customization (colors, font sizz, logo, light/dark modes) passed through to the native UI.