簡體   English   中英

使 ListView 滾動到一個偏移量

[英]Make ListView to scroll to an offset

我試圖在 listView 的屏幕上顯示頂部元素以完全顯示或向上滾動。

child: NotificationListener<ScrollEndNotification>(
          onNotification: (_) {
            double h = 120;
            double remaining = controller.position.pixels % h;
            int offset = 0;
            offset = (remaining > 60)
                ? ((controller.position.pixels ~/ h) + 1) * 120
                : ((controller.position.pixels ~/ h)) * 120;
            if (offset > 0) 
                controller.animateTo(offset.toDouble(),
                           duration: Duration(milliseconds: 500), curve: Curves.easeInOut);
            return true;
          },
          child: ScrollConfiguration(
            behavior: NoEffectScrollBehaviour(),
            child: ListView.builder(
                padding: EdgeInsets.zero,
                controller: controller,
                physics: BouncingScrollPhysics(),
                itemBuilder: (c, i){.......}

但是 controller 沒有滾動到指定的 position。如何使 listView Elenent 顯示或動畫偏移?

編輯:

我正在滾動結束事件上進行轉換。 問題是我無法在 NotificationListner 中執行此操作。

首先你不需要 NotificationListener。 您可以簡單地使用以下方法。

如果你想滾動第一個元素或滾動到頂部你可以使用

controller.animateTo(0,duration: Duration(milliseconds: 500), curve: Curves.easeInOut);

如果你想要 go 特定項目,你可以使用

final listItemHeight = 50;
final itemIndex = 3;
controller.animateTo(listItemHeight * itemIndex,duration: Duration(milliseconds: 500), curve: Curves.easeInOut);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM