получение функциональности context.read () внутри сборки - PullRequest
2 голосов
/ 03 августа 2020

Вызов context.read () внутри сборки небезопасен. Таким образом, возникает ошибка, но Provider.of (context, listen = false) разрешен для обратной совместимости, но по-прежнему небезопасен. Как можно получить функциональность context.read () внутри сборки.

Одно решение, которое я нашел:

В вашу модель добавьте два значения: одно, которое изменится, и другое не будет:

class MyModel extends ChangeNotifier {
  double value = 45;
  double thisValueWillNeverChange = 45;
}

В вызове вашего виджета value, где значение необходимо изменить и должно привести к перестройке виджета, но используйте thisValueWillNeverChange, где вы просто хотите прочитать начальное значение и не хотите обновить виджет.

Вы можете получить доступ к обоим значениям с помощью context.select () или context.watch ().

Тип приложения, в котором я хочу реализовать эту функцию: введите описание изображения здесь

Как видите, заголовок в appBar будет иметь thisValueWillNeverChange, поэтому он останется неизменным c, но текст и ползунок изменятся и будут использовать value.

При запуске приложение будет запускаться со всем, имеющим начальное значение как 45.0

...