如何解决如何将 MessageEvents 的消息分配给 dart/flutter/redis 中的字符串变量
我使用 dartis 0.5.0 作为我的 redis 连接并从 pubsub 示例文件夹中复制了代码,在这里;
void main() async {
runApp(MyApp());
final broker =
await redis.PubSub.connect<String,String>('redis://localhost:6379');
print('connected');
ProcessSignal.sigint.watch().listen((_) async {
await broker.disconnect();
exit(0);});
// Outputs the data received from the server.
broker.stream.listen(print,onError: print,onDone: () => exit(0));
broker.psubscribe(pattern: 'commands');
}
这是我的终端消息;
I/Flutter (26344):已连接
I/Flutter (26344): SubscriptionEvent: {command=psubscribe,channel=commands,channelCount=1}
I/Flutter (26344): MessageEvent
代码有效,但我需要获取 MessageEvent' 消息并将其分配给字符串变量,我可能有几行代码但还没有成功。此外,它现在在主体内部进行测试和其他东西,但它将在项目中的一个有状态小部件中,所以我想写一个返回字符串的函数,然后我就可以在其他地方使用它,所以我希望我说清楚,如果你们能帮助我弄清楚这一点,我将不胜感激
解决方法
您对 broker.stream.listen 的第一个参数是每个事件的发送位置,在这种情况下,“打印”是尽职尽责地打印到终端。将其更改为您自己的方法调用以处理事件:
broker.stream.listen(callYourMethodHere,onError: print,onDone: () => exit(0));
,
broker.stream.listen((event){
if(event is MessageEvent){
print(event.message);
if(event.message == '7'){
Navigator.push(
context,MaterialPageRoute(builder: (context) => Majors()));
}
}else{
print(event);
}
},onDone: () => exit(0));
这非常简单:) 就像我在问题中提到的我对 ascyn 编程非常陌生,这是答案,我希望它对其他人有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。