所以我想实现我的 GraphQL 客户端,这样它就可以使用 graphql_flutter 包来使用多个端点。我通过在 Query 小部件的 QueryOptions 中传递 operationName 参数以某种方式使其工作
Query(
options:
QueryOptions(document: gql(queryName), operationName: 'apiUrl'))
并在我的 GraphQL 配置类中创建了名为 getLink() 的方法,该方法返回具有给定条件的 httpLink(如果 operationName 为 'apiUrl',则返回 httpLink,如果不返回 anotherHttpLink):
class Config {
final HttpLink httpLink = HttpLink(
apiUrl,
);
final HttpLink anotherHttpLink = HttpLink(
anotherApiUrl,
);
Link getLink() {
return Link.split((request) {
return request.operation.operationName == 'apiUrl';
}, httpLink, anotherHttpLink);
}
ValueNotifier<GraphQLClient> initializeClient() {
ValueNotifier<GraphQLClient> client = ValueNotifier(
GraphQLClient(
cache: GraphQLCache(store: HiveStore()),
link: getLink(),
),
);
return client;
}
}
这个问题还有其他解决方案吗?因为这种对我来说看起来像是一种黑客攻击,是的,对于变量的命名很抱歉,它仅适用于这个例子。