我试图在颤振中创建 post 函数 这是我的代码:
Future<String> makePostRequest() async {
String requestResult;
var body = this.toMapRequest();
String requestUrl = RequestZarinpal.PAYMENT_REQUEST_URL;
String gateWayUrl;
String jsonBody = json.encode(body);
final encoding = Encoding.getByName('utf-8');
Response response = await post(
requestUrl,
headers: headers,
body: jsonBody,
encoding: encoding,
).timeout(const Duration(seconds: 10), onTimeout: () {
throw TimeoutException('The connection has timed out, Please try again!');
});
responseBody = response.body;
var parsedJson = json.decode(responseBody);
var data = parsedJson['data'];
var error = parsedJson['errors'];
if (error.toString() != "[]") {
var errorcode = parsedJson['errors']['code'];
print("$body va $requestUrl va $parsedJson");
requestResult = " شما ارور زیر را دریافت کرده اید \n$error";
} else if (data.toString() != "[]") {
var authority = parsedJson['data']['authority'];
requestResult = "اتوریتی شما با موفقیت ساخته شد و به درگاه متصل می شود";
_request.setAuthority(authority);
print(parsedJson);
String gateWay = RequestZarinpal.PAYMENT_GATEWAY_URL;
gateWayUrl = "$gateWay$authority";
if (await canLaunch(gateWayUrl)) {
await launch(
gateWayUrl,
forceSafariVC: false,
forceWebView: false,
headers: headers,
);
} else {
throw 'Could not launch $requestUrl';
}
print(requestResult);
return requestResult;
}
}
但是我收到了这个错误: 正文可能会正常完成,从而导致返回 'null',但返回类型可能是不可为 null 的类型。 尝试在 end.dart(body_might_complete_normally) 添加 return 或 throw 语句 我该怎么办?
答案 0 :(得分:0)
使用 WARNING: Property Version does not exist at path HKEY_LOCAL_MACHINE\SOFTWARE\Dropbox\Client.
WARNING: Cannot find path 'HKLM:\SOFTWARE\WOW6432Node\Dropbox\Client' because it does not exist.
- Product version : Not found
行,您将函数划分为 2 个可能的结果。
正数,没有 if (error.toString() != "[]")
。
也许您应该将 return
移到大括号之后,以便无论如何都会触发返回。
答案 1 :(得分:0)
您缺少 if 条件中的 return 语句
if (error.toString() != "[]") {
var errorcode = parsedJson['errors']['code'];
print("$body va $requestUrl va $parsedJson");
requestResult = " شما ارور زیر را دریافت کرده اید \n$error";
return requestResult;
}