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

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");
}
}

2 respostas
solução!

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!

Ola Lorena, acabei descartando essa questão do preço se manter por considerar que uma alteração do preço seria para mais ou para menos, quando eu deveria tratar esse caso preventivamente dentro do codigo verificando se o preco anterior é igual ao preco atual e desta forma ate exibir uma mensagem informando que nao houve alteracao do preco. Algo nesse sentido. E importante observacao relativo a quantidade de casas decimais para nao cair em casos semelhantes ao citado.