You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flutter请求GraphQL时无法在QueryVariables中封装LogIn

问题原因

  • 你声明的GraphQL Mutation要求传入一个名为Login的Login类型输入对象,但你当前构造的variables参数直接把phone、accessCode放在根层级,没有按照变量定义封装到Login字段下
  • 你的Mutation字符串末尾遗漏了闭合的三引号,会引发Dart语法错误

修复方案

修改inviteCode方法中的variables构造逻辑,补全Mutation字符串的闭合标记即可,修正后完整代码如下:

import 'package:fauna/data/api/graphql_api_client.dart';
import 'package:get/get.dart';
import 'package:graphql_flutter/graphql_flutter.dart';

abstract class InviteCodeRepository {
  Future<void> inviteCode(String inviteCode, String phone);
}

class InviteRepositoryImplementation extends GetxController
    implements InviteCodeRepository {
  String login = r'''
  mutation login($Login: Login){
    login(login: $Login) {
      token
    }
  }
'''; // 补全了三引号闭合标记

  final _gqlClient = Get.put(GraphQLApiClient(), permanent: true);

  @override
  Future<void> inviteCode(String inviteCode, String phone) async {
    // 把参数封装到Login字段下,匹配Mutation的变量定义
    final variables = {
      'Login': {
        'phone': phone,
        'accessCode': inviteCode
      }
    };
    final QueryResult result = await _gqlClient.mutation(
      login,
      variables: variables,
    );
    print(result.data);
  }
}

补充说明

如果请求依然报错,可以打印result.exception查看具体的GraphQL服务端返回的错误信息,排查是否存在字段名拼写错误、Login类型字段不匹配的问题。

内容的提问来源于stack exchange,提问作者Igor Lopatchin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:06:02