Да, @debuggerx, это именно то, что я делал, но я получал кадр "заикания" для каждой зависимости ... Это потому, что после каждой фазы сборки продолжается естественная последовательность фаз и рисует визуальный кадр ... Затем установите состояние вызывается и сборка запускается снова ... Весь этот процесс происходит для каждой зависимости ... Итак, предположим, что у вас A зависит от B, зависит от C, зависит от D ... у вас будет 3 "кадра заикания" .. Так что я хочу сделать, это найти способ избежать этого ... Есть идеи ?!

у убедиться, что я покрываю все случаи

Родительский виджет считывает (и, возможно, использует) дочерний размер или ограничения

Дочерний виджет считывает (и, возможно, использует) родительский размер или ограничения

Дочерний виджет считывает (и, возможно, использует) размер или ограничения другого потомка

Решением, похоже, является ...

Пусть фаза сборки запустится

Затем создаются размер и ограничения виджета, из которого я хочу получить данные.

Затем я прерываю обычную последовательность фаз (чтобы функция Draw Frame не запускалась)

Затем перезапустите этап сборки с данными, которые у меня сейчас есть

И позвольте рамке нарисовать

Проблема в том, что я не знаю, как это сделать.

Ранее я опубликовал гораздо более конкретный вопрос, касающийся этого, и получил пару ответов, конструктор макетов, настраиваемый многодетный макет и пользовательский макет с одним дочерним элементом ...

Но это для очень конкретных обстоятельств

Компоновщик компоновки создает дерево виджетов, которое может зависеть от размера родительского виджета. Так что он обрабатывает только случай 2

А у двух других есть ограничение, что размер родителя не может зависеть от размера ребенка. Так что, похоже, подразумевается, что он обрабатывает только случай 2.

Так какие еще решения есть?

Плагин получения прямоугольника работает, но не прерывает рисование кадра, поэтому есть кадр заиканияhttps://pub.dartlang.org/packages/rect_getter

Плагин After Layout я еще не пробовал, но похоже, что та же проблема возникает, потому что он говорит, что он работает после первого кадраhttps://pub.dartlang.org/packages/after_layout

Любая помощь приветствуется! Я бы не хотел постоянно жить с использованием обходных путей: /

Ответы на вопрос(2)

Ваш ответ на вопрос