Flutterでページングする

1 min read読了の目安(約800字

リストで項目を表示して、下まで来たら追加読み込みをする。
iOSなら、UITableViewを使って、UIScrollViewDelegateでスクロール位置を見たり、表示外のセルがいくつあるかを見て次のページの要素を取得したりします。
これ、Flutterだとどうやるんだろう?
項目の表示はListViewでやるとして、次の要素を取得するかどうかの判断ってどうやるのが良いんだろう?
というわけで、調べてみたら、このページが見つかりました。

Flutterで無限スクロールする手法3選 - Qiita

3通りのやり方が書いてあります。

builderのindexを見てリクエストを発行する方法(Last Index パターン)

これは、iOSでいうところの

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) 

このデリゲートで、制御する感じかな。

ScrollControllerでスクロール量を判定する方法 (Scroll Positon パターン)

これは、

func scrollViewDidScroll(_ scrollView: UIScrollView)

これでスクロール位置をみて制御する感じ。

リスト下端のRenderObjectが画面内に入ったことを検知する方法 (In Sightパターン)

これは、iOSだと何に当たるんだろう?
UITableViewのFooterにIndicator表示するみたいな感じ?

1か2を使うのが良さそうですね。