我有一个包含小部件(消息)的列表,问题是我不能从列表中删除最后一项。我已经试过了
messages.remove(Widget);
messages.removeAt(index);
我甚至试过messages.clear()
|
但它也不起作用……我可以删除所有的信息除了最后一个...我也试过将列更改为listview.builder...请给予我一个建议。
我的页面代码:
....
StreamBuilder(
stream: _channel.stream,
builder:
(context, AsyncSnapshot<dynamic> snapshot) {
if (snapshot.hasData) {
RocketChatMessage? mes;
if (snapshot.hasData) {
try {
var msg = RocketChatMessage.fromJson(
json.decode(snapshot.data));
if (msg.fields != null) {
if (msg.fields!.args![0].msg != null &&
(msg.fields!.args![0].msg!
.isNotEmpty ||
msg.fields!.args![0].file !=
null)) {
if (chat.isEmpty) {
chat.add(msg);
messages.add(generateMessage(msg));
} else {
var item = msg.fields!.args![0].sId;
var ex =
chat.last.fields!.args![0].sId;
if (item != ex) {
chat.add(msg);
messages.add(generateMessage(msg));
scrollDown();
}
}
}
}
} catch (e) {
getChatStory(false);
print("story");
}
}
}
return Expanded(
child: Stack(
children: [
SingleChildScrollView(
controller: scrollController,
child: Column(
children: messages,
),
),
],
));
}
),
....
2条答案
按热度按时间nfzehxib1#
假设您有类似
List<Widget> messages
的东西,您可以使用专用命令删除最后一个元素。它将是messages.removeLast()
。如果这不能回答您的问题,请提供更多细节,如变量messages
的类型。lg40wkob2#
我把StreamBuilder改成了普通的监听器,看起来很好用
和widget