по initState говорит следующее:
You cannot use BuildContext.dependOnInheritedWidgetOfExactType from this method. However, didChangeDependencies will be called immediately following this method, and BuildContext.dependOnInheritedWidgetOfExactType can be used there.
Но context.read-то работает!
Там что, какой-то контекст "недоделанный", что ли?
context.read не использует dependOnInheritedWidgetOfExactType а context.watch использует
да, действительно
Я думаю что дело в том что dependOn… может вызвать ребилд виджета, а на момент вызова initState ещё не вызывался даже первый билд
> This method should not be called from widget constructors or from State.initState methods, because those methods would not get called again if the inherited value were to change. Неочевидное поведение будет. Пишешь, например _value = context.watch<Something>(); и ожидаешь, что оно будет обновляться. А оно не будет.
А, то есть если написать initState() { _value = context.watch<Something>(); } то при изменении Something. ребилд произойдет, но код в initState не выполнится и переменная _value не обновится.
Эти экстеншены для контекста довольно неочевидные , лучше билдеры заюзать
Что за билдеры? Ты про Consumer?
Обсуждают сегодня