dart_gql 0.2.0 copy "dart_gql: ^0.2.0" to clipboard
dart_gql: ^0.2.0 copied to clipboard

A Dart/Flutter plugin for GraphQL operations.

dart_gql #

dart_gql is a multiplatform library for Dart and Flutter that simplifies integration with GraphQL servers, supporting HTTP, WebSocket, advanced cookie management, and flexible client configuration.

Versión en Español

Features #

  • Compatible with pure Dart and Flutter.
  • Queries, mutations, and GraphQL subscriptions.
  • Support for WebSocket and HTTP (with graphql/client.dart).
  • Automatic and custom cookie management (ideal for authentication and session).
  • Allows insecure connections (accept invalid certificates) in VM.
  • Simple and extensible API.
  • Advanced cache and fetch policy configuration.

Installation #

Add the dependency to your pubspec.yaml:

dependencies:
	dart_gql: ^0.2.0

Then run:

dart pub get

Basic Usage #

1. Import the library #

import 'package:dart_gql/dart_gql.dart';

2. Initialize the client #

final dartGql = DartGql(
	apiURL: 'https://your-graphql-server.com/graphql',
	wsURL: 'wss://your-graphql-server.com/graphql', // Optional, for subscriptions
	insecure: false, // Optional, to accept invalid certificates in VM
);

3. Make a query #

import 'package:dart_gql/dart_gql.dart';

final options = QueryOptions(
	document: gql('query { users { id name } }'),
);

final result = await dartGql.query(options);

if (result.hasException) {
	print('Error: ${result.exception}');
} else {
	print('Data: ${result.data}');
}

4. Make a mutation #

final mutationOptions = MutationOptions(
	document: gql('mutation { addUser(name: "John") { id name } }'),
);

final mutationResult = await dartGql.mutate(mutationOptions);
if (mutationResult.hasException) {
	print('Mutation error: ${mutationResult.exception}');
} else {
	print('Mutation data: ${mutationResult.data}');
}

5. Subscribe to real-time updates #

final subscriptionOptions = SubscriptionOptions(
	document: gql('subscription { mensajeNuevo { id texto } }'),
);

final subscription = dartGql.subscribe(subscriptionOptions).listen((result) {
	if (result.hasException) {
		print('Subscription error: ${result.exception}');
	} else {
		print('Subscription data: ${result.data}');
	}
});

To cancel the subscription and close the connection:

subscription.cancel();

Note: The subscription remains active and receives data until you call subscription.cancel() or the server closes the connection.

The client handles cookies automatically. If you need to access or modify cookies manually (e.g., for authentication), you can do so via the CustomClient class:

final client = createHttpClient();
if (client is CustomClient) {
	print('Current cookies: ${client.valueCookie}');
	// You can manually modify the value if needed
	client.valueCookie = 'my_cookie=value';
}

5. Subscriptions (WebSocket) #

If your server supports GraphQL subscriptions, just pass the wsURL when initializing the client. Subscriptions are managed automatically using WebSocketLink.

Compatibility #

  • Dart VM (desktop, mobile, console)
  • Flutter (mobile, web, desktop)
  • Web (using conditional imports and BrowserClient)

Contributing #

Contributions are welcome!
Open an issue or pull request on GitHub.

License #

MIT

0
likes
130
points
68
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart/Flutter plugin for GraphQL operations.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

graphql, http

More

Packages that depend on dart_gql