diff --git a/packages/stream_chat/example/lib/main.dart b/packages/stream_chat/example/lib/main.dart index 11e9779f..bbcc86b8 100644 --- a/packages/stream_chat/example/lib/main.dart +++ b/packages/stream_chat/example/lib/main.dart @@ -79,21 +79,21 @@ class HomeScreen extends StatelessWidget { @override Widget build(BuildContext context) { - final messages = channel.state!.channelStateStream; + final messages = channel.state!.messagesStream; return Scaffold( appBar: AppBar( title: Text('Channel: ${channel.id}'), ), body: SafeArea( - child: StreamBuilder( + child: StreamBuilder?>( stream: messages, builder: ( BuildContext context, - AsyncSnapshot snapshot, + AsyncSnapshot?> snapshot, ) { if (snapshot.hasData && snapshot.data != null) { return MessageView( - messages: snapshot.data!.messages.reversed.toList(), + messages: snapshot.data!.reversed.toList(), channel: channel, ); } else if (snapshot.hasError) { diff --git a/packages/stream_chat/lib/src/api/channel.dart b/packages/stream_chat/lib/src/api/channel.dart index c109b41c..5f33f966 100644 --- a/packages/stream_chat/lib/src/api/channel.dart +++ b/packages/stream_chat/lib/src/api/channel.dart @@ -2,7 +2,8 @@ import 'dart:async'; import 'dart:convert'; import 'dart:math'; -import 'package:collection/collection.dart' show IterableExtension; +import 'package:collection/collection.dart' + show IterableExtension, ListEquality; import 'package:dio/dio.dart'; import 'package:logging/logging.dart'; import 'package:rxdart/rxdart.dart'; @@ -1601,8 +1602,9 @@ class ChannelClientState { List get messages => _channelState.messages; /// Channel message list as a stream - Stream?> get messagesStream => - channelStateStream.map((cs) => cs.messages); + Stream?> get messagesStream => channelStateStream + .map((cs) => cs.messages) + .distinct((prev, next) => const ListEquality().equals(prev, next)); /// Channel pinned message list List? get pinnedMessages => _channelState.pinnedMessages.toList();