Установка высоты виджета стека - PullRequest
0 голосов
/ 23 января 2019

У меня есть макет стека / виджет, внутри которого я, например. 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, я должен установить фактическую высоту там. Если я смогу определить высоту карты, я смогу это сделать.

...