扑。在非常大的 ListView 上设置 ListView 初始位置

Isa*_*aac 5 listview dart flutter

我想创建一个几乎无限的元素列表,但我想将列表的初始位置设置为某个特定元素。像这样的图片:

列表显示

其中索引 0 是初始位置,并且该列表可能会也可能不会在两个方向上延伸很长。

我可以创建我的元素,例如:

  Widget build_tile(int i){
    return Container(child:Text(i.toString()));
  }
Run Code Online (Sandbox Code Playgroud)

我的清单是这样的

ListView.builder(
                  itemBuilder: (context, i) {
                    return build_tile(i-offset);
                  },
              scrollDirection: Axis.horizontal,
            ),
Run Code Online (Sandbox Code Playgroud)

对于图中的示例,偏移量为 2,但如何设置列表的开始位置?

太长了;如何制作像1中那样的非常长的列表 ListView以从某个元素开始?

谢谢!

TWL*_*TWL 5

您可以设置ScrollController 的属性之一:initialScrollOffset

但前提是您知道目标项/索引的偏移位置。

ScrollController _controller = ScrollController(initialScrollOffset: itemHeight * index)

ListView.builder(
  controller: _controller,
  ...
),
Run Code Online (Sandbox Code Playgroud)

请注意,此示例假设列表小部件的大小是恒定大小,但如果列表中没有恒定小部件大小,那么您必须能够计算目标项目的最终偏移位置 - 并且完全是另一个问题

或者,如果您希望它始终是最后一个项目/索引,那么会更容易:

ScrollController _controller = ScrollController(initialScrollOffset: _controller.position.maxScrollExtent)
Run Code Online (Sandbox Code Playgroud)