こんにちは、 id:numanuma08 です 🍛
flutterでタブを含むUIを実装しているとき、タブ中に配置したScrollViewやListViewのスクロール位置がタブを変更したタイミングでリセットされる現象は有名な現象だと思います。少しググるだけで解決策は出てきますが、最もスマートかつflutterが公式に推奨している方法はPageStorageを使う方法です。
実装方法も簡単でScrollViewやListViewのコンストラクターで一意のPageStorageKey
を与えるだけです。この記事ではなぜPageStorageKey
を設定するとスクロール位置が保持されるのかflutterのソースコードを調査して明らかにします。