1
resposta

Curso : Dart: Dominando Assincronismo e Criando Comunicação com APIs - Aula 2 : Capiturando Pacotes - Atividade 8 - Manipulação de Dados JSON

Analisando as questões :

A )

dart
List<dynamic> listResponse = json.decode(response.body)["players"];
int totalResting = 0;
for (dynamic dyn in listResponse) {
    Map<String, dynamic> player = dyn as Map<String, dynamic>;
    if (player["isResting"]){
        totalResting++;
    }
}
print(totalResting);

Correto! Aqui acessamos a lista de players, percorremos cada jogador e contamos os que têm isResting == true.

B )

dart
List<dynamic> listResponse = json.decode(response.body)["players"];
int maxSkill = 0;
String playerName = "";
for (dynamic player in listResponse) {
  Map<String, dynamic> playerMap = player as Map<String, dynamic>;
  if (playerMap["skillRate"] > maxSkill) {
    maxSkill = playerMap["skillRate"];
    playerName = playerMap["name"];
  }
}
print("A pessoa jogadora com maior habilidade é $playerName com habilidade $maxSkill");

Correto! Percorre a lista, compara skillRate e guarda o nome do jogador com maior valor.

C )

dart
List<dynamic> listResponse = json.decode(response.body)["players"];
int count = 0;
for (dynamic player in listResponse) {
  Map<String, dynamic> playerMap = player as Map<String, dynamic>;
  if (playerMap["skillRate"] >= 3) {
    count++;
  }
}
print(count);

Correto! Conta quantos jogadores têm habilidade maior ou igual a 3.

D )

List<dynamic> listResponse = json.decode(response.body)["rules"];
bool winnersRemains = listResponse["winnersRemains"];
int winnersRemainsMax = listResponse["winnersRemainsMax"];
if (winnersRemains){
    print("Usamos a regra de que os vencedores permanecem. E eles ficam por no máximo $winnersRemainsMax rodadas.");
}else{
    print("Não usamos a regra de que os vencedores permaneces.");
}

Incorreto ! O problema é que "rules" não é uma lista, mas sim um objeto (Map). Portanto, o tipo deveria ser Map<String, dynamic> e não List.

Como podemos afirmar qual alternativa correta entre as três ?

Matricule-se agora e aproveite até 50% OFF

O maior desconto do ano para você evoluir com a maior escola de tecnologia

QUERO APROVEITAR
1 resposta

Olá, estudante, como vai?

A letra A está correta e bem aplicada ao objetivo de contar quem está descansando, a letra D está de fato incorreta pelo tipo utilizado. Já as letras B e C precisam de ajustes para atender exatamente ao enunciado.

O item B encontra apenas um nome e perde empates, e o item C apenas conta, mas o pedido era exibir quem tem skillRate maior ou igual a 3.

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