Flutter GraphQL Schema获取插件fetch_graphql_schema的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter GraphQL Schema 获取插件 fetch_graphql_schema 的使用

Fetch GraphQL Schema

从 GraphQL HTTP 端点获取并打印 GraphQL 模式,以便于代码生成。

快速开始 🚀

安装 🧑‍💻
dart pub global activate fetch_graphql_schema

或者安装特定版本:

dart pub global activate fetch_graphql_schema <version>
命令 ✨
fetch_graphql_schema fetch
从 GraphQL HTTP 端点获取并打印 GraphQL 模式。

用法: fetch_graphql_schema fetch [参数]
  -h, --help     打印此使用信息。
  --[no-]json    以 JSON 格式输出(基于 introspection 查询)
  --url          要获取模式的 GraphQL HTTP 端点
  --header       添加自定义头(例如 'Authorization=Bearer ABC','Version=2.1.0')

运行 "fetch_graphql_schema help" 查看全局选项。
使用方法
# 获取并打印
fetch_graphql_schema fetch

fetch_graphql_schema upgrade
更新 Fetch GraphQL Schema CLI 到最新版本。

用法: fetch_graphql_schema upgrade [参数]
-h, --help                               打印此使用信息。

运行 "fetch_graphql_schema help" 查看全局选项。

示例

示例

# 激活 Fetch GraphQL Schema CLI
dart pub global activate fetch_graphql_schema

# 查看可用命令列表
fetch_graphql_schema --help

更多关于Flutter GraphQL Schema获取插件fetch_graphql_schema的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter GraphQL Schema获取插件fetch_graphql_schema的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用fetch_graphql_schema插件来获取GraphQL Schema的示例代码。这个插件能够帮助你自动生成GraphQL客户端代码,基于你的GraphQL服务器提供的Schema。

首先,确保你已经在pubspec.yaml文件中添加了fetch_graphql_schema依赖:

dependencies:
  flutter:
    sdk: flutter
  fetch_graphql_schema: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,假设你已经有一个GraphQL服务器的URL,你可以使用以下步骤来获取Schema并生成相应的Dart代码。

  1. 创建一个Dart脚本来获取GraphQL Schema

创建一个名为fetch_schema.dart的文件,并添加以下代码:

import 'package:fetch_graphql_schema/fetch_graphql_schema.dart';

void main() async {
  // GraphQL服务器的URL
  const graphqlEndpoint = 'https://your-graphql-endpoint.com/graphql';

  // 获取GraphQL Schema
  final schema = await fetchSchema(
    endpoint: graphqlEndpoint,
    headers: {
      'Authorization': 'Bearer YOUR_ACCESS_TOKEN',  // 如果有需要的头部信息,如认证令牌
    },
  );

  // 打印Schema到控制台,或者你可以将其写入文件
  print(schema);

  // 你可以选择将Schema保存到一个文件,以便后续生成代码
  // await File('schema.graphql').writeAsString(schema);
}
  1. 运行Dart脚本来获取Schema

在终端中,导航到你的Flutter项目根目录,并运行以下命令:

dart fetch_schema.dart

这将连接到你的GraphQL服务器并获取Schema,然后将其打印到控制台。你也可以选择将其保存到一个文件(如schema.graphql)中。

  1. 使用生成的Schema生成Dart代码(可选)

一旦你有了GraphQL Schema文件,你可以使用其他工具(如graphql_code_generator)来生成Dart代码。以下是一个简单的示例配置,使用graphql_code_generator来生成代码:

首先,安装graphql_code_generator

flutter pub add graphql_flutter graphql_code_generator

然后,创建一个codegen.yaml文件来配置代码生成:

schema: "schema.graphql"  # 指向你的GraphQL Schema文件
documents: "graphql/**/*.graphql"  # 指向你的GraphQL查询和变更文件
generates:
  path/to/generated/graphql.dart:
    plugins:
      - "schema_ast"
      - "dart"

接下来,运行代码生成命令:

flutter pub run graphql_code_generator:generate_code

这将基于你的GraphQL Schema和查询文件生成Dart代码。

  1. 在你的Flutter应用中使用生成的代码

现在,你可以在你的Flutter应用中使用生成的GraphQL客户端代码来执行查询和变更。

import 'package:flutter/material.dart';
import 'package:graphql_flutter/graphql_flutter.dart';
import 'path/to/generated/graphql.dart';  // 导入生成的代码

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('GraphQL Flutter Example'),
        ),
        body: GraphQLProvider(
          client: GraphQLClient(
            link: HttpLink(
              uri: 'https://your-graphql-endpoint.com/graphql',
            ),
            cache: InMemoryCache(),
          ),
          child: MyHomePage(),
        ),
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final QueryOptions queryOptions = QueryOptions(
    document: YourGeneratedQuery.yourQuery,  // 使用生成的查询
  );

  @override
  Widget build(BuildContext context) {
    final GraphQLProvider graphQLProvider = GraphQLProvider.of(context);
    return Center(
      child: Query(
        options: queryOptions,
        builder: (
          QueryResult result,
          {
            VoidCallback refetch,
            FetchMoreOptions? fetchMoreOptions,
          },
        ) {
          if (result.loading) {
            return Text('Loading...');
          }
          if (result.hasErrors) {
            return Text('Error: ${result.errors!.map((e) => e.message).join(", ")}');
          }
          // 使用查询结果
          final data = result.data!['yourField'] as List<dynamic>;
          return ListView.builder(
            itemCount: data.length,
            itemBuilder: (context, index) {
              return Text('${data[index]['someField']}');
            },
          );
        },
      ),
    );
  }
}

以上代码展示了如何在一个Flutter应用中集成GraphQL客户端,并使用fetch_graphql_schema插件获取的Schema来生成和使用GraphQL查询。请根据你的实际需求调整代码。

回到顶部