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以从某个元素开始?
谢谢!
您可以设置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)