こんにちは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;
}
貴重なお時間お読み下さいまして、誠にありがとうございます。
コメントを残す