Flutter GraphQL代码生成插件graphql_generator2的使用

Flutter GraphQL代码生成插件graphql_generator2的使用

Graphql Generator 2

Pub Version (包括预发布版本) 空安全 Gitter 许可 melos

为带注解的类生成 package:graphql_schema2 模式。

替换 package:graphql_server2 中的 convertDartType

使用

使用非常简单。你只需要在任何你想生成对象类型的类上添加 @graphQLClass@GraphQLClass() 注解即可。

个别字段可以带有 @GraphQLDocumentation() 注解,以提供描述、弃用原因等信息。

@graphQLClass
@GraphQLDocumentation(description: 'Todo 对象类型')
class Todo {
  String text;

  /// 是否已完成
  bool isComplete;
}

void main() {
  print(todoGraphQLType.fields.map((f) => f.name));
}

生成以下内容(截至2019年4月18日):

// 自动生成的代码 - 请勿手动修改

part of 'main.dart';

// **************************************************************************
// _GraphQLGenerator
// **************************************************************************

/// 从 [Todo] 自动生成。
final GraphQLObjectType todoGraphQLType = objectType('Todo',
    isInterface: false,
    description: 'Todo 对象类型',
    interfaces: [],
    fields: [
      field('text', graphQLString),
      field('isComplete', graphQLBoolean, description: '是否已完成')
    ]);

完整示例

以下是一个完整的示例,展示了如何使用 graphql_generator2 插件来生成 GraphQL 类型。

示例代码

import 'package:graphql_schema2/graphql_schema2.dart';
part 'main.g.dart';

/// 带有 GraphQL 注解的 Todo 类。
@graphQLClass
class TodoItem {
  String? text;

  /// 是否已完成。
  @GraphQLDocumentation(description: '是否已完成')
  bool? isComplete;
}

void main() {
  // 打印生成的 GraphQL 字段名称。
  print(todoItemGraphQLType.fields.map((f) => f.name));
}

如何运行

  1. 安装插件: 在 pubspec.yaml 文件中添加依赖项:

    dependencies:
      graphql_schema2: ^x.x.x
      graphql_generator2: ^x.x.x
    
  2. 生成代码: 运行以下命令以生成 GraphQL 类型:

    flutter packages pub run build_runner build
    

更多关于Flutter GraphQL代码生成插件graphql_generator2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter GraphQL代码生成插件graphql_generator2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


graphql_generator2 是一个 Flutter 插件,用于自动生成与 GraphQL 操作相关的 Dart 代码。它可以帮助开发者根据 GraphQL schema 和 queries 自动生成类型安全的 Dart 代码,从而减少手动编写和出错的可能性。

以下是使用 graphql_generator2 的步骤:

1. 安装依赖

首先,你需要在 pubspec.yaml 文件中添加 graphql_generator2build_runner 作为开发依赖。

dev_dependencies:
  graphql_generator2: ^1.0.0
  build_runner: ^2.1.0

2. 创建 GraphQL Schema 文件

在你的项目目录中创建一个 .graphql 文件,例如 schema.graphql,并在其中定义你的 GraphQL schema。

type Query {
  getUser(id: ID!): User
}

type User {
  id: ID!
  name: String!
  email: String!
}

3. 创建 GraphQL Queries

创建一个 .graphql 文件来定义你的查询,例如 queries.graphql

query GetUser($id: ID!) {
  getUser(id: $id) {
    id
    name
    email
  }
}

4. 生成 Dart 代码

运行以下命令来生成 Dart 代码:

flutter pub run build_runner build

这将根据你的 GraphQL schema 和 queries 生成相应的 Dart 代码。

5. 使用生成的代码

生成的文件通常会包含类型安全的查询、突变、订阅等。你可以在你的 Dart 代码中直接使用这些生成的类和方法。

import 'generated/get_user_query.graphql.dart';

void fetchUser(String id) async {
  final client = GraphQLClient(
    link: HttpLink('https://your-graphql-endpoint.com/graphql'),
    cache: GraphQLCache(),
  );

  final options = QueryOptions(
    document: GET_USER_QUERY_DOCUMENT,
    variables: {'id': id},
  );

  final result = await client.query(options);

  if (result.hasException) {
    print(result.exception);
  } else {
    final user = GetUserQuery$Query.fromJson(result.data);
    print(user.getUser?.name);
  }
}

6. 持续生成代码

如果你修改了 .graphql 文件,记得重新运行 flutter pub run build_runner build 来生成新的 Dart 代码。

7. 清除生成的文件

如果你想清除生成的文件,可以运行以下命令:

flutter pub run build_runner clean
回到顶部