У меня есть макет стека / виджет, внутри которого я, например. 10 позиционированных дочерних виджетов. Каждый дочерний виджет имеет верхнюю позицию +40 пикселей, т.е. Верхняя позиция первого ребенка - 0, верхняя позиция второго ребенка - 40, верхняя позиция третьего ребенка - 80 и так далее. Поэтому я должен установить высоту макета стека = (высота дочернего элемента + (10 * 40)). Как я могу это сделать?
Пример кода:
class _CardStackState extends State<CardStackWidget> {
List<Widget> cards;
double lastCardElevation = 1.0;
double lastCardYPosition = 0.0;
void buildCards(BuildContext context) {
this.cards = List();
widget.cardHeaderBodyMap.forEach((header, body) {
cards.add(_CardStackItem(
header: header,
body: body,
cardElevation: lastCardElevation++,
cardBackgroundColor: widget.cardBackgroundColor,
cardCornerRadius: widget.cardCornerRadius,
cardYPosition: lastCardYPosition,
screenHeight: MediaQuery.of(context).size.height,
));
lastCardYPosition += widget.cardHeaderHeight;
});
}
@override
Widget build(BuildContext context) {
buildCards(context);
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints viewportConstraints) {
return SingleChildScrollView(
child: ConstrainedBox(
constraints: BoxConstraints(
minHeight: viewportConstraints.maxHeight,
),
child: Column(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
(widget.headerWidget != null)
? widget.headerWidget
: Container(),
Container(
height: 1000,
margin: EdgeInsets.only(top: 4.0),
child: Stack(
children: cards,
),
),
],
),
),
);
},
);
}
}
См. Высоту контейнера, я установил его на 1000, я должен установить фактическую высоту там. Если я смогу определить высоту карты, я смогу это сделать.