如果有单个项目,内容会完美呈现,但是一旦我们尝试将轮播作为
ListWheelScrollView
的孩子之一,它就无法理解水平滑动。
如果将普通列表视图与普通 ScrollController() 一起使用,则此代码有效
我的要求是如果用户在位置之间滚动,则显示列表中最近的子项,因此使用
FixedExtentScrollController
使用的Scroll Controller固定一个
FixedExtentScrollController()
与下面
ListWheelScrollView
Widget build(BuildContext context) {
return SizedBox(
height: MediaQuery.of(context).size.height,
child: ListWheelScrollView.useDelegate(
itemExtent: MediaQuery.of(context).size.height * 0.87,
perspective: 0.001,
physics: const FixedExtentScrollPhysics(),
controller: scrollController,
childDelegate: ListWheelChildBuilderDelegate(
childCount: data.length,
builder: (BuildContext context, int index) {
return iStreamWidget.render(data[index]);
},
),
),
);
}
水平列表视图
Container(
height: height * 0.88,
padding: const EdgeInsets.symmetric(
horizontal: 20.0,
vertical: 35.0,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTitle(carouselPostModel.title, postModel.postFontType, context),
Expanded(
child: SizedBox(
width: double.infinity,
child: ListView.separated(
itemCount: descriptionList.length,
scrollDirection: Axis.horizontal,
shrinkWrap: true,
physics: const BouncingScrollPhysics(),
itemBuilder: (BuildContext context, int index) {
return _buildCard(
imageUrls[index],
descriptionList[index],
postModel.postFontType,
context,
);
},
separatorBuilder: (index, context) {
return const SizedBox(
width: 10.0,
);
}),
)
),
],
),
);