[Flutter]リストビュー(ListView)で最後の要素を表示するには?

Flutter

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

リストビューで最後の要素を表示する方法を紹介します。

スポンサーリンク

方法

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

リストビューで最後の要素を表示するには、ScrollControllerと「jumpToメソッド」を使います。

まず、ScrolCotrollerを用意します。

var _controller = ScrollController();

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

ListView(
  controller: _controller,
  children: [],
)

そして、ボタンなどに最後の要素を表示する処理を追加します。

_controller.jumpTo(_controller.position.maxScrollExtent);

jumpToメソッドによって特定の位置に移動することが出来ます。

最後の要素の場合は、「_controller.position.maxScrollExtent」を引数に指定します。

これでリストビューで最後の要素を表示することが出来ます。

以下は、使用例です。

  var _controller = ScrollController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: ListView(
        controller: _controller,
        children: [
          for (var i = 0; i < 50; i++)
            Card(
              color: Colors.green,
              child: ListTile(
                title: Text('$i'),
              ),
            ),
          Card(
            color: Colors.pink,
            child: ListTile(
              title: Text('50'),
            ),
          )
        ],
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          _controller.jumpTo(_controller.position.maxScrollExtent);
        },
      ),
    );
  }

ListView.builderでも同じように引数「controller」に、ScrolControllerを指定します。

ListView.builder(
    controller : _controller,
    ・・・
)

まとめ

リストビューで最後の要素を表示するには、ScrolControllerとjumpToメソッドを使用します。

コメント

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