dart - Flutter/GraphQL - 以自定义类型作为参数的突变

标签 dart flutter graphql

我是 flutter 和 graphQL 的新手,目前我正在将 mutations 集成到我的应用程序中。所以,我让服务器端使用模式中定义的一些自定义类型,但我不知道如何在 flutter 端指定它们。让我们看一些代码:

input DiaryGroupPermission {
  groupId: Int!
  permission: Int!
}

input DiaryInsideCommunity {
  communityId: Int!
  permissions: [DiaryGroupPermission]!
}

createDiary(community: DiaryInsideCommunity, description: String, title: String!): Diary

但是在客户端我不知道如何在突变中指定 DiaryInsideCommunity。 我试过这样的事情:

String createDiary = """
  mutation CreateDiary(\$title: String!, \$description: String!, \$community: DiaryInsideCommunity) {
    createDiary(
    title: \$title,
    description: \$description,
    community: \$community
  ) {
    id
  }
)}""".replaceAll('\n', ' ');

并按如下方式传递我的 runMutation:

runMutation({
            "title": _generalPage.title(),
            "description": _generalPage.description(),
            "community": {
              "communityId": 1,
              "permissions": _permissionPage.selectedGroups().map((group) {
                return {
                  "groupId": group.id,
                  "permission": 1,
                };
              }).toList(),
            }
          });

有什么想法吗?在谷歌上找不到任何东西。

最佳答案

喜欢看到围绕 graphql_flutter 库创建的社区。

class DiaryGroupPermission {
  int groupId;
  int permission;

  DiaryGroupPermission.fromJson(Map json)
      : groupId = json['groupId'],
        permission = json['permission'];
}

class DiaryInsideCommunity {
  int communityId;
  List<DiaryGroupPermission> permissions;

  DiaryInsideCommunity.fromJson(Map json)
      : communityId = json['communityId'],
        permissions = json['permissions']
            .map<DiaryGroupPermission>((Map permisionJson) =>
                DiaryGroupPermission.fromJson(permisionJson))
            .toList();
}

class Diary {
  String body;

  Diary(dynamic value) : body = value.toString();
}

typedef Diary createDiaryFunction(
    DiaryInsideCommunity community, String description, String title);

DiaryInsideCommunity community = DiaryInsideCommunity.fromJson({
  'communityId': 1,
  'permissions': [
    {'groupId': 1, 'permission': 1}
  ]
});

Diary mutation(DiaryInsideCommunity community,
        {String description, @required String title}) =>
    Diary(community.permissions[0].groupId);

Diary mutationResult = mutation(community, description: "a", title: "b");

我在 dart 中实现了您想要的类型,并创建了一个模型变异函数来向您展示如何调用它。

在 dart 中做类型没有更简单的方法。

来自这个库的创建者的欢呼,

我们

关于dart - Flutter/GraphQL - 以自定义类型作为参数的突变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53767176/

相关文章:

django - GraphQL 代码生成器 - 无法从 http ://localhost:8000/graphql - Request with GET/HEAD method cannot have body 加载架构

dart - 在 Dart 中创建具有可变数量参数的函数

google-maps - 谷歌地图 flutter 插件

flutter : No Devices available

flutter - Flutter应用程序中是否可以从nfc芯片读取护照数据?

database - 如何获取 DynamoDB 列中的最大数量?

flutter - Listview构建器未更新列表中的值

flutter - 如何在 dart 中获取用户输入?

android - Flutter应用程式库APK启动应用程式时不存在错误

graphql - 查询中的 Concat graphql 字段