我在显示列表视图的地方有以下代码,该列表视图从列表中获取数据,可以从onConnect()
的{{1}}方法中动态更新列表。
因此,此onConnect方法应该是静态的。
现在,当我从WebSocket接收数据时,将调用此onConnect方法,该方法会将值插入列表中。但是listview没有得到更新。
我无法调用STOMP
,因为该setState()
方法是静态的,因此该小部件将使用新数据重新呈现。
任何解决方案。
onConnect()
答案 0 :(得分:0)
要使用或访问setState
方法,您需要位于实例方法内部,而不是静态(类)方法。因此,在这种情况下,response
和onConnectCallback
方法不应是静态的。因为StompClient
引用了这些方法,所以我在实例化窗口小部件时(即在构造函数中)创建一个StompClient client
实例:
class _ChatState extends State<Chat> {
TextEditingController messageEditingController = new TextEditingController();
StompClient client;
// Create a StompClient instance when creating new state
_ChatState() {
client = StompClient(
config: StompConfig(
url: 'ws://localhost:8080/ws',
onConnect: onConnectCallback,
onWebSocketError: (dynamic error) => print(error.toString())),
);
client.activate();
}
onConnectCallback(StompClient client, StompFrame connectFrame) {
...
}
response(StompFrame frame) {
...
// HERE YOU SHOULD BE ABLE TO USE setState() METHOD
}
...