а если вернуться к customSinglechildlayout
там ты получаешь свой размер, затем передаешь ограничения ребенку, получаешь от него размеры и сохраняешь, меняется стейт (только он уже храниться не в чайлде, а в customSingleChildLayout), и в следующий билд ограничиваешь ребенка ранее полученными и сохранеными размерами
Вот здесь вроде весь флоу лэйаута чайлда как раз подходит для этого
https://api.flutter.dev/flutter/rendering/SingleChildLayoutDelegate-class.html