ListView在另一个可滚动小部件内时会生成所有项目

问题描述 投票:0回答:1

[我想在另一个可滚动的窗口小部件中有一个ListView.builder小部件,但是当我像这样构建树时,内部的ListView.builder会生成所有项目(因此,如果列表很大,渲染速度很慢)

我有以下构建方法:

  Widget build(BuildContext context) {
    return Scaffold(
      body: SingleChildScrollView(
        child: Column(
          children: <Widget>[
            Text(""),
            ListView.builder(
              shrinkWrap: true,
              primary: false,
              itemCount: 999,
              itemBuilder: (_, position) {
                if (position == 998)
                  {/* breakpoint*/}
                return Placeholder(fallbackHeight: 100,);
              }
            )
          ],
        ),
      ),
    );
  }

[执行总是在itemBuilder的断点处停止(但是如果我删除了第一个SingleChildScrollViewColumn,一切都很好,仅当需要时才显示最后一个项目)

flutter flutter-layout
1个回答
0
投票

这是预期的。 SingleChildScrollView让其子级获得所需的空间并滚动它们。 ListView借此机会渲染了所有内容。 SingleChildScrollView滚动此巨大的ListViewListView需要某种大小限制,才能仅呈现其显示的项目。现在它认为它正在显示所有这些。

© www.soinside.com 2019 - 2024. All rights reserved.