我正在尝试使用 jetpack compose 开发示例聊天应用程序,并在状态中苦苦挣扎。我有包含消息的 lazyColumn。我的问题是当用户单击按钮时,即使我的列表得到更新,我的“ChatList”功能也不会重新组合。它仅在“消息”状态更改时重新组合。因此,在我向文本字段键入内容后,我可以在列表中看到之前添加的消息。
这是我的组合和视图模型:
var services = Services(thumbnailService: ThumbnailService())
services = Services(thumbnailService: MockThumbnailService()) /// Cannot convert value of type 'MockThumbnailService' to expected argument type 'ThumbnailServiceProtocol'
答案 0 :(得分:4)
我猜您的 messageList
属性正在获取相同内存地址的相同实例(这将无法 - 触发 - 通知新数据)。尝试将 addMessage
函数内的代码更改为:
fun addMessage(message: String) {
messageList.add(ChatItem(message, true))
// messages.value = messageList
messages.value = messageList.toMutableList() // Copy it to a new memory address
}