graphql-flutter
FlutterのGraphQLクライアント
Apollo GraphQL Clientに影響を受けているとのこと
このライブラリ自体はSchemaからDartファイルを生成してくれないので、別のライブラリを使う
artemis
graphqlとgraphql-flutterがある
graphql
GraphQLのクライアントを提供するパッケージ
graphql-flutter
graphql/client.dartへのウィジェットを提供するパッケージ
初期化あれこれ
どうもNull Safety対応はまだ正式ではないようで、graphql-flutter:5.0.0-nullsafety5を使う
ウィジェットとして使うならQuery
実体はStreamBuilderで、GraphQLからデータが取得できたらbuilderに渡した情報でウィジェットを描画する
ウィジェットの層で直接クエリ扱うことはあまりなさそうなので、使わないかもosamtimizer.icon
内部実装はこんな感じ
code:dart
@override
Widget build(BuildContext context) {
return StreamBuilder<QueryResult>(
initialData: observableQuery?.latestResult ?? QueryResult.loading(),
stream: observableQuery.stream,
builder: (
BuildContext buildContext,
AsyncSnapshot<QueryResult> snapshot,
) {
return widget?.builder(
snapshot.data,
refetch: observableQuery.refetch,
fetchMore: observableQuery.fetchMore,
);
},
);
}
単純なクライアントとして使うならGraphQLClient
QueryOptionsではgqlが使える
code:dart
final QueryResult result = await graphQLClient.value.query(QueryOptions(
documentNode: gql(query),
variables: variables,
));
gqlはバッククォート3つで囲う記法が使える
スキーマからDartファイルを生成する
Artemisを使う
まずはbuild.yamlを作る
code:yaml
targets:
$default:
builders:
artemis:
options:
schema_mapping:
- output: lib/graphql_api.dart
schema: lib/my_graphql_schema.graphql
queries_glob: lib/**.graphql