0

所以我想实现我的 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;
  }
}

这个问题还有其他解决方案吗?因为这种对我来说看起来像是一种黑客攻击,是的,对于变量的命名很抱歉,它仅适用于这个例子。

4

0 回答 0