[英]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.