How to scroll to an index by its index number in flutter listview?
Asked Answered
J

1

5

I have a listview . I want to go to a certain widget by it's corresponding index number.

I've tried with ScrollController, but it need offset value to jumpTo the index. But I want to jumpTo a widget by using its index number.

Please, help me to fix it Thanks in advance.

Jobi answered 18/8, 2019 at 14:16 Comment(3)
Possible duplicate of Listview Scrolling to widgetMoorings
this also looks similiar to #54040184Peachey
https://mcmap.net/q/129849/-flutter-listview-scroll-to-index-not-available people who looking for solution might helpDeluca
M
11

Unfortunately, ListView has no built-in approach to a scrollToIndex() function. You’ll have to develop your own way to measure to that element’s offset for animateTo() or jumpTo(), or you can search through suggested solutions/plugins from other posts such as:

(the general scrollToIndex issue is discussed at flutter/issues/12319 since 2017, but still with no current plans)


But there is a different kind of ListView that does support scrollToIndex:

You set it up exactly like ListView and works the same, except you now have access to a ItemScrollController that does:

  • jumpTo({index, alignment})
  • scrollTo({index, alignment, duration, curve})

Simplified example:

ItemScrollController _scrollController = ItemScrollController();

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

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

(note that this library is developed by Google but not by the core Flutter team.)

Maisey answered 18/11, 2019 at 23:20 Comment(2)
Fantastic answer. Though I noticed that when index == item.length - 1, the scrollController behaves funny. Perhaps it's because I'm using BouncingScrollPhysics().Penitential
shrinkWrap isn't there in this pluginTucana

© 2022 - 2024 — McMap. All rights reserved.