Как отключить купертинопикер в флаттере? - PullRequest
1 голос
/ 24 февраля 2020

У меня есть 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 Ответ

2 голосов
/ 24 февраля 2020

Вы можете использовать AbsorbPointer , чтобы включить / отключить сенсорные события для любого виджета. Согласно документации

Когда поглощение имеет значение true, этот виджет не позволяет своему поддереву получать события указателя, завершая тестирование попадания на себя. Он по-прежнему занимает место во время макета и рисует дочерний элемент как обычно. Он просто препятствует тому, чтобы его дочерние элементы были целью обнаруженных событий, потому что он возвращает 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)),
);

Вы можете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...