废话不多 直接上代码: 记得把host.port.和发送的参数换成你自己的
import 'dart:io';
import 'dart:async';
class SocketManage {
static String host='xxx.xxx.xxx.xxx';
static int port=80;
static Socket mSocket;
static Stream<List<int>> mStream;
static initSocket() async{
await Socket.connect(host,port).then((Socket socket) {
mSocket = socket;
mStream=mSocket.asBroadcastStream(); //多次订阅的流 如果直接用socket.listen只能订阅一次
}).catchError((e) {
print('connectException:$e');
initSocket();
});
}
static void addParams(List<int> params){
mSocket.add(params);
}
static void dispos(){
mSocket.close();
}
}
使用:
1.初始化
SocketManage.initSocket(); //这个在main.dart中调用一次就行了
2.在需要发送socket请求的dart文件中调用下面的进行监听和请求
List<int> a=[xx,yy,zz]; //请求参数
SocketManage.mStream.listen(onReceiver);
SocketManage.addParams(a);
3.重写onReceiver方法接收返回值
//接收返回值
void onReceiver(List<int> event) {
MyConstant.packageNum++;
debugPrint('useragreement listen :$event');
}
如果有遇到一个页面多次请求 自己添加一个tag字段去判断就好了。