169 похожих чатов

Почему в initState context.read можно сделать, а context.watch нельзя? Документация Флаттера

по 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-то работает!
Там что, какой-то контекст "недоделанный", что ли?

7 ответов

23 просмотра

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>(); и ожидаешь, что оно будет обновляться. А оно не будет.

Sergio-Molchanovsky Автор вопроса
Kirill Bubochkin
> This method should not be called from widget con...

А, то есть если написать initState() { _value = context.watch<Something>(); } то при изменении Something. ребилд произойдет, но код в initState не выполнится и переменная _value не обновится.

Эти экстеншены для контекста довольно неочевидные , лучше билдеры заюзать

Похожие вопросы

Обсуждают сегодня

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Карта сайта