[英]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.