1
resposta

Resolucao. incremento ao pedido no exercicio

Resolvi criar uma verificação para dizer se houve aumento ou reducao do valor do produto escolhido.

void main() {
Map<String, double> inventarioProdutos = {
"Camiseta": 30.0,
"Calça": 50.0,
"Boné": 15.0,
};

updateValue(inventarioProdutos, "Calça", 45.0);
}

void updateValue(Map<String, double> map, String key, double newValue) {
double? oldValue = map[key];
double? increase;
double? decrease;

if (map.containsKey(key)) {
map[key] = newValue;
if (oldValue! < newValue) {
increase = (newValue - oldValue) * 100 / oldValue;
print(
"O produto atualizado foi $key custava $oldValue e agora custa R$ $newValue. O aumento foi de $increase%",
);
} else {
decrease = (oldValue - newValue) * 100 / oldValue;
print(
"O produto atualizado foi $key custava $oldValue e agora custa R$ $newValue. A redução foi de $decrease%",
);
}
} else {
print("Produto nao encontrado no inventario");
}
}

1 resposta

Olá, Elder!

Parabéns por concluir o desafio. É muito bom ver como você foi além do básico, utilizando a lógica de programação para criar um sistema de monitoramento de preços que calcula variações percentuais em tempo real.

Sua resolução demonstra um domínio excelente sobre o uso de Maps e Null Safety no Dart. Ao capturar o oldValue antes da atualização e realizar o cálculo matemático para distinguir entre aumento e redução, você transformou uma simples alteração de dados em um log informativo e inteligente. O uso do operador ! (bang operator) mostra que você compreendeu como garantir ao compilador que o valor existe após a verificação de containsKey.

Para elevar ainda mais o nível do seu projeto, vale notar um detalhe sobre a formatação: ao lidar com porcentagens que podem gerar muitas casas decimais (como 33.3333%), você pode usar o método .toStringAsFixed(2) para exibir um valor mais amigável. Além disso, se o preço não mudar, seu código cairia no bloco de "redução" (pois a condição é apenas <).

Conseguiu perceber como essa lógica de comparar o estado anterior com o novo é a base para sistemas de histórico de preços em grandes e-commerces?

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!