Как отключить Cupertinopicker во флаттере?
У меня есть CupertinoPicker, при некоторых условиях я должен отключить CupertinoPicker.
Проверил класс 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)),
1 ответ
Вы можете использовать AbsorbPointer для включения / отключения событий касания для любого виджета. Согласно документации
Если поглощение истинно, этот виджет предотвращает получение своим поддеревом событий указателя, завершая проверку попадания на самом себе. Он по-прежнему занимает место во время макета и раскрашивает свой дочерний элемент как обычно. Он просто предотвращает то, что его потомки становятся целью обнаруженных событий, потому что он возвращает true из RenderBox.hitTest.
В вашем случае оберните CupertinoPicker AbsorbPointer и используйте 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)),
);
Вы можете