carouSel.dart

こんにちはEveryDaySoft代表の永田です。

放物線のWidgetを作成するために、カルーセルスクロール機能を作成しました。

ソースコード

https://gist.github.com/daisukenagata/59409c56ae3a3a8ea0f79aad1d574390

挙動

ScrollControllerのaddListenerでスクロール検知して
アニメーションを発生させてます。

あまりロジカルではないですが、1回検知したら制御して、検知しなくする。

指定量までアニメーション後、制御を解除し検知できるようにする。

スクロールした最終X軸をメモリ上で保持し、次のスクロール時に右か左か判定してます。

ロジック箇所

void _carouSelCheck(double value) {
  if (_carouSelFlg) {
    if (_c.position.pixels > _pixels) {
      _carouSelFlg = false;
      _carouSelCount += 2;
    } else {
      _carouSelFlg = false;
      _carouSelCount -= 2;
    }

    _c
        .animateTo((_carouSelCount * value * 2),
            duration: const Duration(milliseconds: 500), curve: Curves.easeIn)
        .then((value) => _carouSelFlg = true);
  }
  _pixels = _c.position.pixels;
}

貴重なお時間お読み下さいまして、誠にありがとうございます。