Dart 如何使用Flatter使用GraphQL订阅?

Dart 如何使用Flatter使用GraphQL订阅?,dart,flutter,graphql,subscription,Dart,Flutter,Graphql,Subscription,我正在使用GraphQL创建一个订阅,我需要使用Flatter来使用该订阅,但我不知道如何做到这一点,我需要的是一个UI组件,它将绑定到订阅,并将自动刷新 非常感谢您的反馈。您可以查看下一个库只要找到此库中的错误,只需按ctrl键并单击subscription打开subscription.dart文件。在该文件中,很容易看到socketClient变量为null。因此,只需在initState()函数中定义它,如文档所示。重新启动应用程序。它就像一个符咒。因此,基本上,您只需要在subscrip

我正在使用GraphQL创建一个订阅,我需要使用Flatter来使用该订阅,但我不知道如何做到这一点,我需要的是一个UI组件,它将绑定到订阅,并将自动刷新


非常感谢您的反馈。

您可以查看下一个库

只要找到此库中的错误,只需按ctrl键并单击subscription打开subscription.dart文件。在该文件中,很容易看到socketClient变量为null。因此,只需在initState()函数中定义它,如文档所示。重新启动应用程序。它就像一个符咒。因此,基本上,您只需要在subscription.dart文件中初始化该变量。

My GraphqlServer运行一个名为
getLogs
的订阅,该订阅以以下格式返回日志信息

{
“数据”:{
“获取日志”:{
“时间戳”:“18:09:24”,
“日志级别”:“调试”,
“文件”:“logger.py”,
“函数”:“初始化”,
“行”:“1”,
“消息”:“你好,来自logger.py”
}
}
}
如果您像我一样只想直接使用,那么下面的示例可能会有所帮助

import'包:graphql/client.dart';
导入“包:graphql/internal.dart”;
进口“包装:颤振/材料.省道”;
导入“dart:async”;
类LogPuller扩展StatefulWidget{
静态最终WebSocketLink _WebSocketLink=WebSocketLink(
url:'ws://localhost:8000/graphql/',
配置:SocketClientConfig(
自动重新连接:正确,
),
);
静态最终链接_Link=_webSocketLink;
@凌驾
_LogPullerState createState();
}
类_LogPullerState扩展状态{
最终图形QLClient _client=图形QLClient(
链接:LogPuller.\u链接,
缓存:InMemoryCache(),
);
//订阅查询应采用以下格式。请注意“GetMyLogs”如何用作下面的操作名称。
最终字符串subscribeQuery=''
订阅GetMyLogs{
获取日志{
时间戳
对数电平
文件
功能
线
消息
}
}
''';
手术操作;
溪流(logStream);;
@凌驾
void initState(){
super.initState();
//注意操作名称很重要。如果未提供,则流订阅在第一次拉取后失败。
operation=operation(文档:subscribeQuery,operationName:'GetMyLogs');
_logStream=_client.subscribe(操作);
}
@凌驾
小部件构建(构建上下文){
返回流生成器(
流:_logStream,
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.waiting){
返回中心(
子:容器(
子对象:循环压缩机指示器(
冲程宽度:1.0,
),
),
);
}
if(snapshot.hasData){
返回中心(
子:文本(
snapshot.data.data['getLogs']
['message'],//这将根据您的需要进行更改。
),
);
}
返回容器();
},
);
}
}

当我使用StreamBuilder构建小部件时,它将负责关闭流。如果您的情况不是这样,
stream.listen()
方法将返回一个
StreamSubscription
对象,您可以调用
cancel()
方法,该方法可以在有状态小部件的
dispose()
方法或独立
Dart
客户端的任何此类方法中完成。

您使用的库是什么?你已经尝试过了吗?我没有使用过库,我创建了一个像我自己一样的库,我创建了对GraphQLI的API调用,我试图使用这个库,但我不知道应该在哪里初始化socketClient,你能给我一些帮助吗?