По сути, я хочу отрендерить ModalRoute
, который зависит от какого-то виджета на маршруте под ним.
Для этого я использую GlobalKey
, который я прикрепляю к виджету на нижнем маршруте:
/// in LOWER route (widget that is in lower route)
@override
Widget build(BuildContext context) {
return Container(
key: globalKey,
child: ..,
);
}
/// UPPER route (different class!)
/// called using a function on tap in the lower route widget
/// `showModalRoute(globalKey)`
@override
Widget buildPage(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation) {
final renderBox = globalKey.currentContext.findRenderObject() as RenderBox;
final Size size = renderBox.size;
return SizedBox(
width: size.width,
height: size.height,
child: ..,
);
}
Я пытаюсь заставить это реагировать на изменения ориентации .Виджет в нижнем маршруте меняет размер при изменении ориентации.Проблема здесь в том, что верхний маршрут , кажется, построен до верхнего маршрута .Возможно, это не тот случай, однако size
всегда является предыдущим размером, т.е. я получаю размер ландшафта при повороте на портретную полосу и наоборот, как если бы верхний маршрут был построен до нижнего маршрута (мое предположение).То же самое относится и к должности.Я в основном получаю предыдущий RenderBox
.
Можно ли как-нибудь получить текущую позицию моего виджета, т.е. через renderBox.localToGlobal(0, 0)
?Я полагаю, что я мог бы добиться этого с помощью рендера buildPage
после того, как GlobalKey
получил новый размер.