Поделитесь откуда вы взяли что это антипаттерн?
И где тут инверсия зависимостей?
В целом то что вы описали - не только "можно" но и распространенная схема.
Widget предоставляет интерфейс для работы с ним - такие то пропсы можно передать,
такие то методы он может принять.
Дальше container организует ему это все. И тут Widget является источником api - что у него в логике и в пропсах прописано - так и надо использовать.
Какой там Container уже все равно пока он использует Widget правильно.
Если вы хотите в Widget передавать компоненты которые этот Widget должен внутри себя рендерить - это тоже нормально, для Widget это просто еще один из пропсов.
классический пример (не считая уже встроенного в JSX children) - кнопка с иконкой, кнопка в пропсах объявляет что у нее есть возможность получить иконку, и предполагает что-то насчет нее (например она должна быть квадратной, не больше 40 пикс и тп)
А дальше вы в Container пишете <IconButton icon={<Icon/>}>Hello</IconButton>
Никакое знание о вашем контейнере в кнопке не нужно.