Client constructor

Client({
  1. required Link link,
  2. Cache? cache,
  3. StreamController<OperationRequest>? requestController,
  4. Map<String, TypePolicy> typePolicies = const {},
  5. Map<String, Function> updateCacheHandlers = const {},
  6. Map<OperationType, FetchPolicy> defaultFetchPolicies = const {},
  7. bool addTypename = true,
})

Implementation

Client({
  required this.link,
  Cache? cache,
  StreamController<OperationRequest>? requestController,
  this.typePolicies = const {},
  this.updateCacheHandlers = const {},
  this.defaultFetchPolicies = const {},
  this.addTypename = true,
}) {
  this.cache = cache ??= _defaultCache = Cache();
  this.requestController = requestController ??=
      _defaultRequestController = StreamController.broadcast();
  _typedLink = TypedLink.from([
    ErrorTypedLink(),
    RequestControllerTypedLink(this.requestController),
    if (addTypename) AddTypenameTypedLink(),
    if (updateCacheHandlers.isNotEmpty)
      UpdateCacheTypedLink(
        cache: this.cache,
        updateCacheHandlers: updateCacheHandlers,
      ),
    FetchPolicyTypedLink(
      link: link,
      cache: this.cache,
      defaultFetchPolicies: defaultFetchPolicies,
    )
  ]);
}