gpt4 book ai didi

dart - 在构建时计算文本小部件的高度

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

我正在尝试在 SliverFixedExtentList 下添加填充以使用 SliverPadding 填充屏幕,并在以下位置添加 Text.rich 小部件屏幕底部。计算列表的高度相当容易,因为我正在设置范围。但我还应该记住 Text.rich 小部件的高度。

我不确定如何在构建时计算 Text.rich 小部件的高度,这可能吗?如果不是,什么是更好的方法?

我一直在使用以下代码:

  Widget build(BuildContext context) {
double maxNonScrollableListSize = (MediaQuery.of(context).size.height - listPadding.bottom - listPadding.top - bottomFooterPadding.bottom - fontSize - 2);
double totalChildHeight = childCount * itemExtent;
double footerPadding = maxNonScrollableListSize > totalChildHeight ? maxNonScrollableListSize - totalChildHeight : 5.0;
return new Scaffold(
body: new Container(
color: new Color.fromRGBO(50, 120, 176, 1.0),
child: new CustomScrollView(
slivers: <Widget>[
new SliverPadding(
padding: listPadding,
sliver: new SliverFixedExtentList(
itemExtent: itemExtent,
delegate: new SliverChildBuilderDelegate(
(BuildContext context, int index) {
return new Card(
child: new Container(
child: new Center(child: new Text("Card $index")),
),
);
},
childCount: childCount,
),
),
),
new SliverPadding(
padding: new EdgeInsets.only(bottom: footerPadding),
),
new SliverToBoxAdapter(
child: new Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
new Container(child: new Text("ok", style: new TextStyle(fontSize: fontSize),))
],
),
),
new SliverPadding(
padding: bottomFooterPadding,
),
],
)
),
);
}

最佳答案

没有。这是不可能的。

小部件系统的全部意义在于使小部件自治。在任何情况下,他们都不应该在构建时知道他们的 child 的大小。唯一的异常(exception)是该尺寸是预定义的(例如 PreferredSizeWidget)。

如果您确定就需要它。那么你要创建的不是一个widget,而是一个RenderBox。这是 flutter 的较低层之一。

关于dart - 在构建时计算文本小部件的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49618000/

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