如何禁用Cupertinopicker的颤振



我有一个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)),
);

你可以

最新更新