Flutter / GraphQL - мутация с пользовательским типом в качестве параметра - PullRequest
0 голосов
/ 13 декабря 2018

Я новичок в флаттере и graphQL, и в настоящее время я интегрирую мутации в свое приложение.Итак, у меня есть серверная часть, использующая некоторые пользовательские типы, определенные в схеме, но я не знаю, как указать их на стороне флаттера.Давайте посмотрим некоторый код:

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(),
            }
          });

Есть идеи?В Google ничего не могу найти.

1 Ответ

0 голосов
/ 15 декабря 2018

Мне нравится видеть сообщество, созданное вокруг библиотеки 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, и создал функцию мутации макета, чтобы показать вам, как ее вызывать.

Нет более простого способа делать типы в дротике.

Приветствия от создателя этой библиотеки,

Eus

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...