我有一个CupertinoPicker,在某些情况下,我必须禁用CupertinoPixer。
已检查CupertinoPicker类,但未在其中找到任何禁用属性。
如果无法禁用,我可以停止滚动吗?
CupertinoPicker(
backgroundColor: null,
itemExtent: PICKER_EXTENT,
useMagnifier: true,
looping: true,
onSelectedItemChanged: (int index) {
print('selected index $index');
},
children: List<Widget>.generate(dataList.length, (int index) {
return Center(
child: Text(dataList[index]),
);
}),
scrollController:
FixedExtentScrollController(initialItem: selectedIndex)),
您可以使用AbsorbPointer为任何小部件启用/禁用触摸事件。根据文件
当吸收为真时,该小部件通过终止对其自身的命中测试来防止其子树接收指针事件。它在布局过程中仍然会消耗空间,并像往常一样绘制子对象。它只是防止其子级成为已定位事件的目标,因为它从RenderBox.hitTest.返回true
在您的情况下,用AbsorbPointer包装CupertinoPicker,并使用absorbing
属性为CupertinoPicker
启用/禁用触摸事件
AbsorbPointer(
absorbing: true,
child: CupertinoPicker(
backgroundColor: null,
itemExtent: 100.0,
useMagnifier: true,
looping: true,
onSelectedItemChanged: (int index) {
print('selected index $index');
},
children: List<Widget>.generate(dataList.length, (int index) {
return Center(
child: Text(dataList[index]),
);
}),
scrollController:
FixedExtentScrollController(initialItem: selectedIndex)),
);
你可以