问题描述
我在flutter应用程序的同一小部件中使用了2个流。我使用websocket连接将侦听的坐标发送到getPositionStream()。一旦订阅了getPositionStream(),我就使流订阅暂停。当我恢复订阅时,websocket断开连接。我已经在Django Channels上实现了后端。
以下是窗口小部件的构建方法:
final WebSocketChannel channel = IOWebSocketChannel.connect(
'ws://192.168.1.22:8000/ws/switch/',headers: {
'authorization':
'Token ${Provider.of<User>(context,listen: false).token}'
});
StreamSubscription posstream = geolocator
.getPositionStream(locationOptions)
.listen((Position position) {
final room = position.latitude.toStringAsFixed(3) +
position.longitude.toStringAsFixed(3);
print(room);
channel.sink.add({'room_name': room});
});
posstream.pause();
channel.stream.listen((event) {
final spotdata = json.decode(event) as Map;
print(spotdata['message']['song']);
});
return ChangeNotifierProvider(
create: (_) => Mode(),child: Consumer<Mode>(
builder: (context,user,child) => FlatButton(
child: Text('Button'),onPressed: () {
user.setnot(!user.normalortravel);
if (!user.normalortravel)
posstream.resume();
else
posstream.pause();
},),);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)