如何通过颤动列表视图中的索引号滚动到索引?

Posted

技术标签:

【中文标题】如何通过颤动列表视图中的索引号滚动到索引?【英文标题】:How to scroll to an index by its index number in flutter listview? 【发布时间】:2019-12-24 00:05:07 【问题描述】:

我有一个列表视图。我想通过它对应的索引号转到某个小部件。

我尝试过使用 ScrollController,但它需要偏移值才能跳转到索引。但是我想通过使用它的索引号来跳转到一个小部件。

请帮我解决它 提前致谢。

【问题讨论】:

Listview Scrolling to widget的可能重复 这看起来也类似于***.com/questions/54039684/… ***.com/a/63620653/10511266 寻求解决方案的人可能会有所帮助 【参考方案1】:

不幸的是,ListView 没有内置的 scrollToIndex() 函数方法。您必须开发自己的方法来测量该元素对 animateTo()jumpTo() 的偏移量,或者您可以从其他帖子中搜索建议的解决方案/插件,例如:

flutter ListView scroll to index not available Flutter: Scrolling to a widget in ListView

(自 2017 年以来,flutter/issues/12319 讨论了一般的 scrollToIndex 问题,但目前还没有计划)


但是有一种不同的 ListView 确实支持 scrollToIndex:

ScrollablePositionedList scrollable_positioned_list 依赖:flutter_widgets

您的设置与 ListView 完全相同,并且工作方式相同,只是您现在可以访问 ItemScrollController:

jumpTo(index, alignment) scrollTo(index, alignment, duration, curve)

简化示例:

ItemScrollController _scrollController = ItemScrollController();

ScrollablePositionedList.builder(
  itemScrollController: _scrollController,
  itemCount: _myList.length,
  itemBuilder: (context, index) 
    return _myList[index];
  ,
)

_scrollController.scrollTo(index: 150, duration: Duration(seconds: 1));

(请注意,此库由 Google 开发,而非 Flutter 核心团队开发。)

【讨论】:

很棒的答案。虽然我注意到当index == item.length - 1 时,scrollController 的行为很有趣。也许是因为我使用的是BouncingScrollPhysics() shrinkWrap 不在此插件中

以上是关于如何通过颤动列表视图中的索引号滚动到索引?的主要内容,如果未能解决你的问题,请参考以下文章

颤振列表视图字母索引

颤动 ListView 滚动到索引不可用

颤动 - 在列表视图构建器中滚动列表视图

以编程方式防止滚动列表视图颤动

在列表视图之外使用鼠标颤动 Web 滚动视图

如何在颤动的列表视图中嵌套列表视图?