Flutter GraphQL代码生成插件graphql_generator2的使用
Flutter GraphQL代码生成插件graphql_generator2的使用
Graphql Generator 2
为带注解的类生成 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));
}
如何运行
-
安装插件: 在
pubspec.yaml
文件中添加依赖项:dependencies: graphql_schema2: ^x.x.x graphql_generator2: ^x.x.x
-
生成代码: 运行以下命令以生成 GraphQL 类型:
flutter packages pub run build_runner build
更多关于Flutter GraphQL代码生成插件graphql_generator2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于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_generator2
和 build_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