繁体   English   中英

如何在 flutter 中获取整个 list.builder 的高度

[英]How to get the height of the whole list.builder in flutter

我需要获取整个 list.builder 高度,包括屏幕视图之外的部分列表子项的高度不同

我使用了 GlobalKey 方法,但它只给了我屏幕上显示的列表的高度

我找到了这个解决方案,它正在工作,并在滚动事件后给我完整的 list.builder 高度,但是当通过更改 state 将更多子项添加到 list.builder 时,此代码不再起作用

scrollController.addListener(() {
double? fullListViewHeight;

  double fullListHeightHelper = listKey.currentContext!.size!.height +
      scrollController.position.extentAfter;
  fullListView ??= fullListHeightHelper;
}

listview.builder只构建显示给用户的项目,为了使用 GlobalKey 方法获取高度,您可以使用同时构建所有项目的listView 如果您不知道如何将列表传递给listView ,请参见以下示例:

List yourList = [...];
_buildList(){
  List<Widget> _children =yourList.map((e) => YourListItem()).toList();

  return ListView(
     key:yourKey,
     children: _children,
   );
}

它只给了我屏幕上显示的列表的高度

对,那是正确的。 因为 listview 不会呈现所有的孩子。 请参阅listview的文档:

ListView.builder...构造器适用于具有大量(或无限)子级的列表视图,因为仅对那些实际可见的子级调用构建器。

要获得所有孩子的确切身高是不可能的。 因为当小部件子滚动出视图时,相关的元素子树、状态和渲染对象被破坏。

我认为您需要手动计算或使孩子的身高对所有人都相同。

要计算它,您需要使每个项目的高度相同。 然后,要获得ListView.builder的高度,您只需将每个项目的高度乘以ListView.builder的长度。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM