书接上文,来到了目录第二层,为了能更加直观酷炫地展示课程目录,使用了 carousel_slider 插件,但光使用此插件依然感觉单调,所以想实现一个滑动过程中背景跟着漫游的功能(ps:不知此说法是否严谨),如下所示
都怪笔者比较愚笨,思路不对,记录思路以示自己:
1.一想可以动态设置 image 的 alignment,结果是没有动画效果,而是卡顿着变动
2.二想这是动画效果,是不是应该使用 AnimatedContainer ,盘了一天没盘出来
3.三想这个动作不就是滑动图片吗,茅塞顿开 赶紧使用 GestureDetector,无奈怎么播弄, onHorizontalDragUpdate 函数一直无法跑进去,茅只能再度塞
4.四想 使用相对底层的 Listener
,虽然 onPointerMove 可以跑进去,无奈本人才疏学浅,拿不出一个 size 转 Alignment 而且让他们平滑运动的方程,最终放弃
5.最终章五想,原来 插件 carousel_slider 中有个属性 onScrolled 🙄,此时除了想给自己面门来几下之外,依然没忘码码
1.写 onScrolled 调用的函数
void callbackFunction(double covariant) {
double step = covariant / this.courseList.length;
setState(() {
this.alignment =
Alignment.lerp(Alignment.centerLeft, Alignment.centerRight, step);
});
}
2.onScrolled调用
CarouselSlider(
options: CarouselOptions(
autoPlay: false,
enlargeCenterPage: true,
enableInfiniteScroll: false,
viewportFraction: 0.61,
initialPage: 0,
onScrolled: callbackFunction,
height: double.infinity),
items: courseList.map((item) {
return this.courseItem(item);
}).toList(),
)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。