Как изменить состояние провайдера внутри себя?

Минимальный воспроизводимый код:

final provider = StateProvider<bool>((ref) {
  Timer? _timer;

  ref.listenSelf((_, flag) {
    if (!flag) {
      _timer = Timer(Duration(seconds: 5), () {
        ref.read(this).state = true;
      });
    }
  });

  // ... disposing timer, etc.

  return true;
});

Вышеупомянутый провайдер сначала возвращает true, и я изменяю это значение на false в виджете, а через 5 секунд после этого я хочу снова изменить это значение на true. Я использую listenSelf, но не могу.


Примечание:

Я не хочу использовать StateNotifier с StateNotifierProvider.

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
1
0
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

ref поставщика обычно предоставляет способ изменить себя.
В случае StateProvider вы можете сделать Ref.controller, чтобы получить StateController

Поэтому вы можете сделать ref.controller.state = true

Я получаю эту ошибку The getter 'notifier' isn't defined for the type 'StateProviderRef<bool>'.

iDecode 19.11.2022 14:21

Ах, извините, имя переменной не notifier, а controller

Rémi Rousselet 19.11.2022 14:41

Другие вопросы по теме