diff --git a/packages/stream_chat_flutter/CHANGELOG.md b/packages/stream_chat_flutter/CHANGELOG.md index e68c7b9b..9e4f2744 100644 --- a/packages/stream_chat_flutter/CHANGELOG.md +++ b/packages/stream_chat_flutter/CHANGELOG.md @@ -3,6 +3,7 @@ 🐞 Fixed -[[#687]](https://github.com/GetStream/stream-chat-flutter/issues/687): Fix Users losing their place in the conversation after replying in threads. +- Fixed floating date stream subscription causing "Bad state: stream has already been listened.” error. ✅ Added diff --git a/packages/stream_chat_flutter/lib/src/message_list_view.dart b/packages/stream_chat_flutter/lib/src/message_list_view.dart index e67f00dd..42285475 100644 --- a/packages/stream_chat_flutter/lib/src/message_list_view.dart +++ b/packages/stream_chat_flutter/lib/src/message_list_view.dart @@ -293,7 +293,6 @@ class _MessageListViewState extends State { void Function(Message)? _onThreadTap; bool _showScrollToBottom = false; late final ItemPositionsListener _itemPositionListener; - late final Stream> _itemPositionStream; int? _messageListLength; StreamChannelState? streamChannel; late StreamChatThemeData _streamTheme; @@ -665,7 +664,8 @@ class _MessageListViewState extends State { right: 0, child: BetterStreamBuilder>( initialData: _itemPositionListener.itemPositions.value, - stream: _itemPositionStream, + stream: _valueListenableToStreamAdapter( + _itemPositionListener.itemPositions), comparator: (a, b) { if (a == null || b == null) { return false; @@ -1194,8 +1194,6 @@ class _MessageListViewState extends State { _scrollController = widget.scrollController ?? ItemScrollController(); _itemPositionListener = widget.itemPositionListener ?? ItemPositionsListener.create(); - _itemPositionStream = - _valueListenableToStreamAdapter(_itemPositionListener.itemPositions); _getOnThreadTap(); super.initState();