diff --git a/lib/src/views/chats/chat_list_view.dart b/lib/src/views/chats/chat_list_view.dart index 0ab9637..55db6a7 100644 --- a/lib/src/views/chats/chat_list_view.dart +++ b/lib/src/views/chats/chat_list_view.dart @@ -32,6 +32,14 @@ class ChatListView extends StatefulWidget { } class _ChatListViewState extends State { + late Stream> contactListStream; + + @override + void initState() { + super.initState(); + contactListStream = twonlyDatabase.contactsDao.watchContactsForChatList(); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -86,7 +94,7 @@ class _ChatListViewState extends State { ], ), body: StreamBuilder( - stream: twonlyDatabase.contactsDao.watchContactsForChatList(), + stream: contactListStream, builder: (context, snapshot) { if (!snapshot.hasData || snapshot.data == null) { return Container(); @@ -157,12 +165,18 @@ class _UserListItem extends State { int lastMessageInSeconds = 0; MessageSendState state = MessageSendState.send; Message? currentMessage; + late Stream> lastMessageStream; + late Stream> notOpenedMessageStream; Timer? updateTime; @override void initState() { super.initState(); + lastMessageStream = + twonlyDatabase.messagesDao.watchLastMessage(widget.user.userId); + notOpenedMessageStream = + twonlyDatabase.messagesDao.watchMessageNotOpened(widget.user.userId); lastUpdateTime(); } @@ -196,8 +210,7 @@ class _UserListItem extends State { child: ListTile( title: Text(getContactDisplayName(widget.user)), subtitle: StreamBuilder( - stream: - twonlyDatabase.messagesDao.watchLastMessage(widget.user.userId), + stream: lastMessageStream, builder: (context, lastMessageSnapshot) { if (!lastMessageSnapshot.hasData) { return Container(); @@ -207,8 +220,7 @@ class _UserListItem extends State { } final lastMessage = lastMessageSnapshot.data!.first; return StreamBuilder( - stream: twonlyDatabase.messagesDao - .watchMessageNotOpened(widget.user.userId), + stream: notOpenedMessageStream, builder: (context, notOpenedMessagesSnapshot) { if (!lastMessageSnapshot.hasData) { return Container();