#flutter #logout #setter
#флаттер #Выход #сеттер
Вопрос:
У меня есть переменная, вызываемая в totalQuantity в provider:
get totalQuantity => total_quantity();
total_quantity() {
var totalQty = 0;
for (var x in myCart) {
totalQty = (x.quantity);
}
return totalQty;
}
Я использую его на панели приложений:
child: Text('${prod.totalQuantity}',
У меня есть функция выхода, которую я хочу, когда я нажимаю на нее, чтобы сбросить общее количество, я думаю, используя сеттер для этого в provider, но я не знаю, как это сделать.
IconButton(
onPressed: () {
prod.clear_myCart();
loginProd.log_out();
// ----------------- I want to reset it here
},
Ответ №1:
Я нашел свою ошибку, я забыл добавить уведомление о прослушивании
void clear_myCart() {
myCart.clear();
notifyListeners();
}
после того, как я добавлю его, он работает нормально
Ответ №2:
Я понимаю, что вы хотите вернуться totalQuantity
к исходному (пустому) значению, поэтому давайте посмотрим, откуда оно получает свое значение: ваша total_quantity()
функция зависит от одной переменной, myCart
. Итак, если вы очистите myCart
prod.clear_myCart();
, количество также должно быть соответствующим образом обновлено.
Теперь, что ваш код не показывает, так это то, как изменение значения myCart
обрабатывается в вашем коде; Я размышляю здесь, потому что ваши фрагменты кода не предоставляют достаточной информации, но вы ChangeNotifier
можете просто не звонить notifyListeners()
при вызове prod.clear_myCart();
(см. https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple ).