flutter - 如何使用getx显示websocket数据
问题描述
我想使用 getx 在带有套接字值的 ListDemo 小部件上实时显示数据,但我无法实现
// socket.dart
class WebSocket {
final hubConnection = HubConnectionBuilder().withUrl(EnvironmentHml.socketUrlFake).build();
SocketController socketController = Get.put(SocketController());
createWS() async {
await hubConnection.start();
hubConnection.on("ReceiveMessage", listenWSMessages);
}
listenWSMessages(List<Object> result) { // simple ws listener
socketController.wsData = result[1];
}
}
// socket_controller.dart
class SocketController extends GetxController {
var wsData = ''.obs;
}
我的小部件:
class ListDemo extends StatelessWidget {
final ListDemoController listDemoController = Get.put(ListDemoController());
@override
Widget build(BuildContext context) {
return Container(
child: Text('display data here'),
);
}
}
小部件控制器:
class ListDemoController extends GetxController {
WebSocket webSocket = WebSocket(); // create a websocket
@override
void onInit() {
super.onInit();
webSocket.createWS(); // start websocket
}
}
websocket连接有效,但此时我不知道该怎么做
解决方案
好的,我终于得到了解决方案,基本上我所做的是:
// socket.dart
listenWSMessages(List<Object> result) {
socketController.wsData.value = result[1]; // add .value
}
// list_demo_controller.dart
class ListDemoController extends GetxController {
WebSocket webSocket = WebSocket();
var data = ''.obs; // create this variable
@override
void onInit() {
super.onInit();
webSocket.createWS();
data = webSocket.socketController.wsData; // add this line
}
}
// finally in list_demo.dart
class ListDemo extends StatelessWidget {
final ListDemoController listDemoController = Get.put(ListDemoController());
@override
Widget build(BuildContext context) {
return Container(
child: Obx(() => Text("${listDemoController.data}")), // add this line
);
}
}
推荐阅读
- spring-cloud - Spring Cloud 配置客户端未从配置服务器中选择值
- java - Java 中 HH:mm 或 HH:mm:ss 中逗号分隔时间的正则表达式,例如 12:00,13:03:21
- api - 如何在 API 商店 (WSO2) 中命名我的 API?是否有任何命名约定或最佳实践?
- python - 有没有简单的方法来使用 pyautogui?
- docker - 如何在 Docker 中监控环形缓冲区以进行非阻塞日志记录?
- java - 使用可折叠元素在网格中显示对象
- dc.js - dc.js 仅在 numberDisplay 中添加一些值
- java - 在java中循环遍历两个矩阵
- firebase - Firebase Crashlytics:dSYMS 未正确处理
- json - 如何将 aws-sdk-go 的输出设置为“文本”?