[英]Flutter: ListView height is getting reduced when other widgets are available
[英]How to get the height of widgets in ListView in Flutter?
我正在創建一個小部件,它采用一個List
的Widget
並允許在它們上選擇一個Widget
,這就是這個Widget
將被裝飾的時候(例如,將在它周圍繪制一個彩色矩形)。 我使用CustomMultiChildLayout
小部件,因為我需要List
中Widget
的高度,以便將裝飾矩形從一個Widget
動畫化到另一個Widget
(即,我在其他小部件上方繪制動畫矩形並對其進行轉換和調整大小)。
問題是,當我將CustomMultiChildLayout
與大型小部件列表一起使用時,我失去了原生 Flutter ListView
作為延遲渲染提供的性能,因為CustomMultiChildLayout
渲染了所有小部件,甚至是不可見的小部件。 如果我想在我的小部件中再次實現這一點,我想重新創建輪子。 所以問題是:有沒有辦法獲取ListView
中項目的高度和寬度,以便我可以使用ListView
而不是使用CustomMultiChildLayout
?
注意: List
中的小部件可能具有不同的高度和寬度,因此附加的約束會使問題更加復雜。
就像我的代碼看起來如何的一個最小示例:
CustomMultiChildLayout(
delegate: SelectableListViewLayoutDelegate(
itemCount: widget.children.length,
//...
),
children: [
for (int i = 0; i < widget.children.length; i++)
LayoutId(
id: i,
child: GestureDetector(
child: widget.children[i],
onTap: () {
//...
},
),
),
if (widget.controller?.selectedIndex != null)
LayoutId(
id: -1,
child: selectedItemOverlayWidget, // this is the decorated rectang
),
],
);
在 ListView 中為子小部件包裝 LayoutBuilder 怎么樣? 然后通過約束得到widget的maxHeight。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.