gpt4 book ai didi

flutter - 如何在 CustomMultiChildLayout 中拥有动态高度?

转载 作者:IT王子 更新时间:2023-10-29 07:23:57 26 4
gpt4 key购买 nike

我创建了一个 CustomMultiChildLayout 以自定义其子项的位置。然后尝试将 CustomMultiChildLayout 放入 Container 中,使用 BoxConstraints(maxHeight: 500),然后 CustomMultiChildLayout 总是maxHeight 500 作为高度。它不能根据它的 child 调整它的高度。

那么如何为我的 CustomMultiChildLayout 设置动态高度?如果这不可能,是否还有其他方法可以实现此布局?

背景:

我定义了 3 个小部件,每个小部件都是一个 Container,我需要自定义它们的位置。

SellerWidget 应位于其他两个小部件的中间。

请引用这张图片:enter image description here

这是我的代码:

class ProductComboWidget extends StatelessWidget {

final Product _product;

ProductComboWidget(this._product);

@override
Widget build(BuildContext context) {
return Container(
constraints: BoxConstraints(maxHeight: 500),
child: CustomMultiChildLayout(
delegate: _TitleInfoLayout(),
children: <Widget>[
LayoutId(
id: _TitleInfoLayout.title,
child: ProductTitleWidget(_product)
),
LayoutId(
id: _TitleInfoLayout.info,
child: ProductInfoWidget(_product)
),
LayoutId(
id: _TitleInfoLayout.seller,
child: SellerWidget(_product.seller)
),
],
),
);
}

}

class _TitleInfoLayout extends MultiChildLayoutDelegate {

static const String title = 'title';
static const String info = 'info';
static const String seller = 'seller';

@override
void performLayout(Size size) {
final Size titleSize = layoutChild(title, BoxConstraints(maxWidth: size.width));
positionChild(title, Offset(0, 0));

layoutChild(info, BoxConstraints(maxWidth: size.width));
positionChild(info, Offset(0, titleSize.height));

final Size sellerSize = layoutChild(seller, BoxConstraints());
positionChild(seller, Offset(size.width - sellerSize.width - 20, titleSize.height - sellerSize.height / 2));
}

@override
bool shouldRelayout(MultiChildLayoutDelegate oldDelegate) {
return true;
}

}

实际结果:

CustomMultiChildLayout 的高度总是等于 BoxConstraint.maxHeight,它不能根据它的 child 调整它的高度。

请引用这张图片:enter image description here

这个小部件的底部有一个无用的空白区域。

预期结果:

像其他小部件一样,让它的高度适应它的 child 。

最佳答案

ColumnStack 实现的启发,我创建了一个自定义布局来完成这项工作。 https://gist.github.com/jxw1102/a9b58a78a80c8e2f54233b418429fa50

关于flutter - 如何在 CustomMultiChildLayout 中拥有动态高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54000912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com