
Hi,
I finally caught the error in flutter sdk! It happens after 4 months of struggling. Basically, graphql has two usage methods. The first one is limited and can't get two documents for example in one shot
The other method is better as it allows that.
First method in flutter is working fine.
Second method doesn't work at all because it needs the query as a map and not as a list of queries.
I fixed this in the sdk but don't know how to make that a permanent solution that isn't wiped with every pub get.

////-------------Before :------------////
part of '../appwrite.dart';
/// The GraphQL API allows you to query and mutate your Appwrite server using
/// GraphQL.
class Graphql extends Service {
/// Initializes a [Graphql] service
Graphql(super.client);
/// GraphQL endpoint
///
/// Execute a GraphQL mutation.
Future query({required List query}) async {
const String apiPath = '/graphql';
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post,
path: apiPath, params: apiParams, headers: apiHeaders,);
return res.data;
}
/// GraphQL endpoint
///
/// Execute a GraphQL mutation.
Future mutation({required Map query}) async {
const String apiPath = '/graphql/mutation';
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post,
path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
}
}

|
////-------------After :------------////
|
part of '../appwrite.dart';
/// The GraphQL API allows you to query and mutate your Appwrite server using
/// GraphQL.
class Graphql extends Service {
/// Initializes a [Graphql] service
Graphql(super.client);
/// GraphQL endpoint
///
/// Execute a GraphQL mutation.
Future query({required List query}) async {
const String apiPath = '/graphql';
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post,
path: apiPath, params: apiParams, headers: apiHeaders,);
return res.data;
}
/// GraphQL endpoint
///
/// Execute a GraphQL mutation.
Future mutation({required List query}) async {
const String apiPath = '/graphql/mutation';
final Map<String, dynamic> apiParams = {
'query': query,
};
final Map<String, String> apiHeaders = {
'x-sdk-graphql': 'true',
'content-type': 'application/json',
};
final res = await client.call(HttpMethod.post,
path: apiPath, params: apiParams, headers: apiHeaders);
return res.data;
}
}

One change: {required Map query} to {required List query}
And it works to batch queries with this change
Recommended threads
- Issue in saving special character ' ╟ '...
I've created a chat application using Appwrite. However, when users try to save code that contains the character '╟', an internal server error occurs. Interesti...
- Auth issue: 401 general_unauthorized_sco...
Hello, I face a big problem with Appwrite Auth that I never face before. It's very simple, the most basic auth process just don't work ```dart final client = ...
- Need help on Flutter OAuth2
Am trying to use Appwrite OAuth (google, apple and facebook), am been on it for sometimes now which have tried many things but still not able to make it work: ...
