Flutter: как использовать setter для сброса значения

#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 ).