graphql_flutter 突变查询需要 return 语句 - 不确定如何添加它
graphql_flutter mutation query expects return statement - not sure how to add it
builder 方法上的突变查询需要一个 return 语句,我不确定在何处以及如何将其添加到下面的代码中。我相信突变查询应该 return 操作通过或失败。
过去几天我一直在努力解决这个问题。我仍然不知道哪里出了问题。
我有这个方法,当用户填写一次性代码时,它会在 onCompleted 回调中调用。
createUser 变更查询 -
class GraphQlMutations {
final String createUser = r'''
mutation createUser($uid: ID!, $fullname: String!, $phone: String!, $photourl: String, $createdtime: String){
createUser(uid: $uid, fullname: $fullname, phone: $phone, photourl: $photourl, createdtime: $createdtime){
uid
fullname
phone
photourl
createdtime
}
}
''';
}
void signInWithPhoneAuthCredential(
PhoneAuthCredential phoneAuthCredential) async {
setState(() {
showLoading = true;
});
try {
setState(() {
showLoading = false;
});
final authCredential =
await _auth.signInWithCredential(phoneAuthCredential);
User? user = authCredential.user;
print(user);
if (authCredential.user != null) {
Mutation(
options: MutationOptions(
document: gql(GraphQlMutations().createUser),
onCompleted: (dynamic resultData) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('New user added')));
}),
builder: (RunMutation createUser, QueryResult? result) {
if (user != null) {
final DateTime? createdTime = user.metadata.creationTime;
final DateFormat formatter = DateFormat('yyyy-MM-dd');
final String userCreatedTime = formatter.format(createdTime!);
try {
createUser({
'uid': user.uid,
'fullname': _fullname.text,
'phone': user.phoneNumber,
'photourl': 'https://www.bol.com',
'createdtime': userCreatedTime,
});
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => Conversations()));
} catch (e) {}
}
},
);
}
}
}
Vscode 指出构建器方法中的一个错误,该方法恰好是 -
正文可能会正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。
尝试在
处添加 return 或 throw 语句
请有 graphq_flutter 专业知识的人提供帮助。
谢谢。
您是否在 graphql 控制台中检查了您的突变查询,因为突变查询需要字段返回或 affected_rows 如图所示
如果您 运行 听起来很安全,那么您还应该考虑您的任何字段(uid、全名、phone、...)不会重新调整为空。
如果问题未解决
,你能否提供有关 createUser
的更多详细信息
builder 方法上的突变查询需要一个 return 语句,我不确定在何处以及如何将其添加到下面的代码中。我相信突变查询应该 return 操作通过或失败。
过去几天我一直在努力解决这个问题。我仍然不知道哪里出了问题。
我有这个方法,当用户填写一次性代码时,它会在 onCompleted 回调中调用。
createUser 变更查询 -
class GraphQlMutations {
final String createUser = r'''
mutation createUser($uid: ID!, $fullname: String!, $phone: String!, $photourl: String, $createdtime: String){
createUser(uid: $uid, fullname: $fullname, phone: $phone, photourl: $photourl, createdtime: $createdtime){
uid
fullname
phone
photourl
createdtime
}
}
''';
}
void signInWithPhoneAuthCredential(
PhoneAuthCredential phoneAuthCredential) async {
setState(() {
showLoading = true;
});
try {
setState(() {
showLoading = false;
});
final authCredential =
await _auth.signInWithCredential(phoneAuthCredential);
User? user = authCredential.user;
print(user);
if (authCredential.user != null) {
Mutation(
options: MutationOptions(
document: gql(GraphQlMutations().createUser),
onCompleted: (dynamic resultData) {
ScaffoldMessenger.of(context)
.showSnackBar(SnackBar(content: Text('New user added')));
}),
builder: (RunMutation createUser, QueryResult? result) {
if (user != null) {
final DateTime? createdTime = user.metadata.creationTime;
final DateFormat formatter = DateFormat('yyyy-MM-dd');
final String userCreatedTime = formatter.format(createdTime!);
try {
createUser({
'uid': user.uid,
'fullname': _fullname.text,
'phone': user.phoneNumber,
'photourl': 'https://www.bol.com',
'createdtime': userCreatedTime,
});
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (context) => Conversations()));
} catch (e) {}
}
},
);
}
}
}
Vscode 指出构建器方法中的一个错误,该方法恰好是 -
正文可能会正常完成,导致 'null' 被 returned,但 return 类型可能是不可为 null 的类型。 尝试在
处添加 return 或 throw 语句请有 graphq_flutter 专业知识的人提供帮助。
谢谢。
您是否在 graphql 控制台中检查了您的突变查询,因为突变查询需要字段返回或 affected_rows 如图所示
如果您 运行 听起来很安全,那么您还应该考虑您的任何字段(uid、全名、phone、...)不会重新调整为空。
如果问题未解决
,你能否提供有关createUser
的更多详细信息