ql_gen

ql_gen generates typed Dart GraphQL helpers from schema files. It parses a GraphQL schema and produces Dart models plus operation builders to simplify query and mutation execution in client apps.

Features

  • Generate Dart types from GraphQL schema objects.
  • Generate query and mutation helpers.
  • Generate selectors/field builders for typed request construction.
  • CLI support for schema-to-file generation.

Install

Add dependency:

dependencies:
  ql_gen: ^0.1.5

Then run:

dart pub get

CLI usage

dart run ql_gen --help

Arguments:

-s, --source    The source schema file path (default: schema.gql)
-t, --target    The output Dart file path (default: ql.dart)
-h, --help      Prints this help message

Generate output:

dart run ql_gen -s schema.gql -t lib/src/generated/ql.dart

Programmatic usage

import 'package:ql_gen/ql_gen.dart';

void main() {
  final generator = ApiGenerator('schema.gql');
  generator.export('lib/src/generated/ql.dart');
}

Runtime integration

Generated methods expect an executor with signature:

Future<Map<String, dynamic>?> execute(
  (String, Map<String, dynamic>) queryAndVariables,
)

This allows using any GraphQL transport/client package. The tuple contains:

  • $1: GraphQL query string
  • $2: variables map

Example schema

type Author {
  id: ID
  name: String
  books: [Book!]
}

type Book {
  id: ID
  title: String
  author: Author
}

type Query {
  books: [Book!]
  authors: [Author!]
  book(id: ID!): Book
  author(id: ID!): Author
}

A complete generated sample is available in doc/result.dart.

Development

  • Run tests: dart test
  • Run analysis: dart analyze

Issues

Bug reports and feature requests are welcome at:

Libraries

ql_gen
Public API for ql_gen schema parsing and Dart code generation.