0

I have a Gridview.builder in a Widget. When I open the widget I would like to jump immediately to the end of the Grid List.

class _StampsInTravelbookState extends State<StampsInTravelbook> {
  ScrollController _scrollController = new ScrollController();

  @override
  Widget build(BuildContext context) {
    if (_scrollController.hasClients) {
      _scrollController.jumpTo(_scrollController.position.maxScrollExtent);
    }
    return GridView.builder(
      controller: _scrollController,
      reverse: false,
      itemCount:
          Provider.of<UserPosProv>(context, listen: true).userStamps.length,
      shrinkWrap: true, 

But I always have the Grid at the beginning.

When I set

reverse: true

the Grid shows the end of the list.

JoergP
  • 1,349
  • 2
  • 13
  • 28

2 Answers2

2

Add userStamps.reverse()

Example

class _StampsInTravelbookState extends State<StampsInTravelbook> {
  @override
  Widget build(BuildContext context) {
    final userStamps = Provider.of<UserPosProv>(context, listen: true).userStamps;
    userStamps.reverse(); // This line makes your userStamps list reversed.
    return GridView.builder(
      itemCount: userStamps.length,
      itemBuilder: (context, index) => // Your GridTile here,
      shrinkWrap: true,
    );
  }
}
Raiyan
  • 388
  • 2
  • 11
  • Thx, this works!!! I had to change it slightly: Provider.of(context, listen: true) .userStamps .reversed .toList() – JoergP May 22 '21 at 13:48
1

i think this will work for you

 _scrollController.animateTo(
        _scrollController.position.maxScrollExtent,
        duration: Duration(milliseconds: 500),
        curve: Curves.fastOutSlowIn);
``
Why_So_Ezz
  • 160
  • 1
  • 7