FlutterでListViewを特定の位置にスクロールさせる方法

FlutterでListViewの指定位置へスクロールするには、ScrollControllerでスクロールの場所を制御できます。具体的には、以下の手順で実現できます。

  1. スクロールコントローラオブジェクトを作成するには、ステートフルウィジェットの initStateメソッドで初期化できます:
ScrollController _controller = ScrollController();
  1. ListViewのcontrollerプロパティに、上記で作成したScrollControllerオブジェクトを設定する
ListView(
controller: _controller,
//...
)
  1. コントローラーをアニメーション化
_controller.animateTo(
// 指定位置的偏移量
offset,
// 滚动时间
duration: Duration(milliseconds: 500),
// 滚动动画曲线
curve: Curves.easeInOut,
);

offsetはスクロール先位置のずれです。_controller.positionプロパティから現在位置の情報を取得し、必要に応じてスクロール先の位置を計算できます。

ListViewがビルドされるまで_controller.animateToを呼び出さないように注意して、さもないと空ポインタ例外が生じます。WidgetsBinding.instance.addPostFrameCallbackを使用して、スクロールメソッドの呼び出しを遅延させ、ListViewがすでにビルドされていることを確認できます。例:

WidgetsBinding.instance.addPostFrameCallback((_) {
_controller.animateTo(
//...
);
});

上記のステップを実行することで、ListView内において目的の位置にスクロールする機能を実現できます。

bannerAds