Минимальный воспроизводимый код:
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
.
ref
поставщика обычно предоставляет способ изменить себя.
В случае StateProvider
вы можете сделать Ref.controller
, чтобы получить StateController
Поэтому вы можете сделать ref.controller.state = true
Ах, извините, имя переменной не notifier
, а controller
Я получаю эту ошибку
The getter 'notifier' isn't defined for the type 'StateProviderRef<bool>'
.