[Flutter]Cardをカルーセル表示するには?

Flutter

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

Cardをカルーセル表示する方法を紹介します。

スポンサーリンク

方法

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

Cardをカルーセル表示するには、「carousel_slider」パッケージを使います。

まず、「pubspec.yaml」でパッケージの導入をします。

dependencies:
  carousel_slider: ^4.0.0

そして、該当ファイルでパッケージのインポートをします。

import 'package:carousel_slider/carousel_slider.dart';

次に、カルーセル表示する場所にCarouselSliderウェジェットを配置します。

CarouselSliderの引数「items」にカルーセル表示するCardのリスト、引数「options」にCarouselOptionsを指定します。

CarouselSlider(
  items: [
    //カルーセル表示するカード
    Card(),
    Card(),
    Card(),
    Card(),
   ・・・
  ],
  options: CarouselOptions(),
),

最後に、CarouselOptionsの引数でカルーセルの設定をします。

CarouselSlider(
  items: [
    Card(),
    Card(),
    Card(),
    Card(),
    ・・・
  ],
  options: CarouselOptions(
    initialPage: 0, //最初のページ
    enableInfiniteScroll: true, //無限スクロール
    autoPlay: true, //自動スクロール
    autoPlayInterval: Duration(seconds: 1), //スクロールのインターバル
    autoPlayAnimationDuration: Duration(milliseconds: 800), //スクロールの時間
    autoPlayCurve: Curves.fastOutSlowIn, //スクロールの仕方
    enlargeCenterPage: true, //真ん中を拡大表示
    ~~~省略~~~
  ),
),

CarouselOptionsの引数は、必須ではないので必要なものを指定してください。

これでCardをカルーセル表示することが出来ます。

使用例

以下は、使用例です。

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Scaffold(
        body: Center(
          child: CarouselSlider(
            items: [
              Card(
                child: Container(
                  height: 200,
                  width: 200,
                  color: Colors.blue,
                ),
              ),
              Card(
                child: Container(
                  height: 200,
                  width: 200,
                  color: Colors.green,
                ),
              ),
              Card(
                child: Container(
                  height: 200,
                  width: 200,
                  color: Colors.yellow,
                ),
              ),
              Card(
                child: Container(
                  height: 200,
                  width: 200,
                  color: Colors.pink,
                ),
              ),
            ],
            options: CarouselOptions(
              initialPage: 0,
              enableInfiniteScroll: true,
              autoPlay: true,
              autoPlayInterval: Duration(seconds: 1),
              autoPlayAnimationDuration: Duration(milliseconds: 800),
              autoPlayCurve: Curves.fastOutSlowIn,
              enlargeCenterPage: true,
            ),
          ),
        ),
      ),
    );
  }

コメント

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