Fiz de outra maneira, utilzei getters
com o @computed
para que o valor fosse atualizado na tela:
// Obs: meu _items está privado, porque eu criei um getter para ele (items)
@computed
double get sumTotal =>
_items.fold<double>(0.0, (acc, item) => acc + item.preco);
@computed
String get formattedTotal => sumTotal.toStringAsFixed(2).replaceAll('.', ',');
Também adicionei uma função para formatar o total em String
, padronizando as casas decimais para o PT-BR.
Para acessar o campo na tela, chamo o get formattedTotal
:
[...]
Align(
alignment: Alignment.centerRight,
child: Text(
"R\$ ${cartStore.formattedTotal}",
style: TextStyle(
fontSize: 16,
color: Theme.of(context)
.colorScheme
.onPrimary,
),
),
),
[...]