Как отключить 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)),

person Uday    schedule 24.02.2020    source источник
comment
вы можете попробовать AbsorbPointer (child: YourWidget (...),);   -  person Darish    schedule 24.02.2020


Ответы (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)),
);

Вы можете

person Darish    schedule 24.02.2020