В документации Riverpod говорится:
Вот где
context.read(myProvider)
- решение.Используя его, мы могли бы реорганизовать наш предыдущий код, чтобы:
@override Widget build(BuildContext context) { return RaisedButton( onPressed: () => context.read(counterProvider).state++, child: Text('increment'), ); }
Таким образом, нажатие на нашу кнопку по-прежнему увеличивает счетчик. Но мы больше не слушаем провайдера, что позволяет избежать ненужных перестроек.
Но тут говорится:
осторожность
Избегайте вызова
context.read
внутриbuild
метода виджета. Если вы хотите оптимизировать перестроения, извлеките вместо этого значение, прослушиваемое в Provider.
Меня это немного сбивает с толку. Сначала в документации дается пример использования context.read
внутри метода build
, а затем выдается предупреждение, чтобы этого не произошло. Почему?