1
resposta

Meu código não roda : ((

Fala, pessoal! Estava seguindo aqui com o curso mas meu código não roda. Sinceramente, não faço ideia do motivo, tentei fazer exatamente como o professor fez no vídeo e ainda tentando corrigir, cheghei até a copiar o código da descrição do vídeo, mas mesmo assim, sem sucesso.

Alguém pode me ajudar?

Segue me código:

import 'package:dart_assincronismo/api_key.dart';
import 'package:http/http.dart';
import 'dart:convert';

void main() {
  // requestData();
  //requestDataAsync();

sendDataAsync({
  "id": "NEW001",
  "name": "Flutter",
  "lastName": "Dart",
  "balance": "5000"  
});
}


Future<List<dynamic>> requestDataAsync() async{
  String url = "https://api.github.com/gists/1c9312e0da7d84eb45a0d142f0d4563e";
Response response = await get(Uri.parse(url));
return json.decode(response.body);
}
Future <void> sendDataAsync(Map<String, dynamic> mapAccount) async {
  List<dynamic> listAccounts = await requestDataAsync();
  listAccounts.add(mapAccount);
  String content = json.encode(listAccounts);

  String url = "https://api.github.com/gists/413c0aefe6c6abc464581c29029c8ace";

  Response response = await post(
    Uri.parse(url),
    headers: {"Authorization": "Bearer $githubApiKey", "Content-Type": "application/json"},
    body: json.encode({
      "description": "account.json",
      "public": true,
      "files": {
        "accounts.json": {"content": content}}
    }
  ),
  );
  print(response.statusCode);
}
1 resposta

Olá, Ivan, como vai?

Notei que o ponto central está no endereço usado dentro da função requestDataAsync. O retorno esperado vem de um arquivo dentro do Gist, mas o link utilizado aponta para a API do Gist, não para o conteúdo bruto do arquivo. Quando isso acontece, o json.decode não recebe o conteúdo no formato adequado e toda a cadeia passa a não funcionar.

Um exemplo seria usar o link do arquivo bruto, algo como: https://gist.githubusercontent.com/usuario/id_do_gist/raw/nome_do_arquivo.json. Esse tipo de endereço retorna diretamente o JSON que a função precisa.

Espero ter ajudado.

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado