[Flutter]ListViewの最後の要素まで自動スクロールする方法

Flutter

どうも、ちょげ(@chogetarou)です。

ListViewの最後の要素までボタンなどでスクロールさせる方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

ListViewの最後の要素までスクロールするようにするには、まず「ScrollController」の変数を用意します。

var _scrollController = ScrollController();

次に、用意した変数をListViewもしくは、ListView.builderの引数「controller」に指定します。

ListView(
  controller: _scrollController,
  children : []
)

後は、ScrollControllerを使って、最後の要素までスクロールする処理を追加します。

最後の要素までスクロールするには、ScrollControllerの「animateToメソッド」を使って行います。

_scrollController.animateTo(
  _scrollController.position.maxScrollExtent, //最後の要素の指定
  duration: /*スクロール時間*/, 
  curve: /*スクロールの仕方*/,
);

「duration」はスクロールする時間、「curve」はスクロールの仕方をCurvesで指定します。

この処理を、ボタンなどに追加することでListViewの最後の要素までスクロールすることが出来ます。

以下は、使用例です。

  var _scrollController = ScrollController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView.builder(
        controller: _scrollController,
        shrinkWrap: true,
        itemCount: 20,
        itemBuilder: (context, index) {
          return Card(
            child: SizedBox(
              height: 50,
              child: Text(
                '$index',
                textAlign: TextAlign.center,
              ),
            ),
          );
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _scrollController.animateTo(
            _scrollController.position.maxScrollExtent,
            duration: Duration(seconds: 2),
            curve: Curves.bounceOut,
          );
        },
      ),
    );
  }

まとめ

ListViewの最後の要素までスクロールするには、ScrollControllerとanimateToメソッドを使います。

コメント

タイトルとURLをコピーしました