как создать будущую функцию во флаттере?

Я пытаюсь создать почтовую функцию во флаттере, вот мой код:

        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 типом. Попробуйте добавить оператор return или throw в конец. Dart (body_might_complete_normally), что мне делать?

2 ответа

С линией if (error.toString() != "[]") вы разделили свою функцию на 2 возможных результата.

Положительный, не имеет return.

Может тебе стоит переехать return requestResult; после фигурной скобки, так что возврат срабатывает независимо.

Вам не хватает оператора возврата внутри условия if

      if (error.toString() != "[]") {
  var errorcode = parsedJson['errors']['code'];
  print("$body   va  $requestUrl va $parsedJson");
  requestResult = "   شما ارور زیر را دریافت کرده اید \n$error";

  return requestResult;
}
Другие вопросы по тегам