簡體   English   中英

如何在 Flutter 中獲取 ListView 中小部件的高度?

[英]How to get the height of widgets in ListView in Flutter?

我正在創建一個小部件,它采用一個ListWidget並允許在它們上選擇一個Widget ,這就是這個Widget將被裝飾的時候(例如,將在它周圍繪制一個彩色矩形)。 我使用CustomMultiChildLayout小部件,因為我需要ListWidget的高度,以便將裝飾矩形從一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM