Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Try adding either a return or a throw statement at the end

Boa noite!

Depois da refatoração minha função save está com o seguinte erro:

The body might complete normally, causing 'null' to be returned, but the return type is a potentially non-nullable type. Try adding either a return or a throw statement at the end.

Segue código:

Future<Transaction> save(Transaction transaction, String password) async {
    final String transactionJson = jsonEncode(transaction.toJson());

    final http.Response response = await client.post(
      Uri.parse(baseURL),
      headers: {"Content-type": "application/json", "password": password},
      body: transactionJson,
    );
    if (response.statusCode == 200) {
      return Transaction.fromJson(jsonDecode(response.body));
    }

    _throwHttpError(response.statusCode);
  }

Alguém consegue me ajudar?

3 respostas
solução!

Acabei conseguindo resolver o erro colocando "?" em Future<Transaction?>

Oi Natalie,

Estou com o mesmo problema, porém resolvi de outra forma. Esse erro ocorre porque a função save não retorna nada caso o status code seja diferente de 200. Nesse caso, apenas repassei o throw com a Exception no fim da função. Isso já é suficiente para resolver o erro.

  Future<Transaction> save(Transaction transaction, String password) async {
    final String encodedJson = jsonEncode(transaction.toJson());

    final Response response = await client.post(
      Uri.http(baseUrl, 'transactions'),
      headers: {
        'Content-type': 'application/json',
        'password': password,
      },
      body: encodedJson,
    );
    if (response.statusCode == 200) {
      return Transaction.fromJson(jsonDecode(response.body));
    }
    throw _throwHttpError(response.statusCode);
  }

  Exception _throwHttpError(int statusCode) =>
      throw Exception(_statusCodeResponses[statusCode]);

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Problemas com Exception