无法返回字符串,因为它在 Flutter 中的返回类型为"未来<登录>



我正在向数据库发送一个post请求电话号码和密码,如果用户发送不正确的凭据,那么它会显示消息"用户未注册"。但是在其他情况下,它显示了return message"类型'String'的值不能从方法'makeRequestLogin'返回,因为它有一个返回类型'Future<Login?>'.">

Future<Login?> makeRequestLogin(String mobileNumber, String password) async {
var response = await http.post(Uri.parse('$baseURL/customer/login'), body: {
"phone_number": mobileNumber,
"password": password,
"registration_type": "normal"
});
if (response.statusCode == 200) {
final responseString = response.body;
final data = jsonDecode(responseString);
Login signUp = Login.fromJson(data);
return signUp;
} else {
final responseString = response.body;
var result = json.decode(responseString);
String message = result["message"];
return message; // On this line getting an error
}
}

模型

class Login {
String? phoneNumber;
String? password;
Login({
this.phoneNumber,
this.password,
});
Login.fromJson(Map<String, dynamic> json) {
phoneNumber = json["phone_number"]?.toString();
password = json["password"]?.toString();
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = Map<String, dynamic>();
data["phone_number"] = phoneNumber;
data["password"] = password;
return data;
}
}

不返回Login?,返回String?

转换
Future<Login?> makeRequestLogin(String mobileNumber, String password) async 

Future<String?> makeRequestLogin(String mobileNumber, String password) async 

更改返回Login实例为String。

这个特定的未来函数的返回类型是login,就像你在尖括号内写的那样,所以函数体中的任何返回类型都应该是login,而不是一个简单的字符串。

一个解决方案是在你的模型类中有一个字符串错误字段,当错误发生时访问它

相关内容

最新更新