1

私は 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)),
4

1 に答える 1

2

AbsorbPointerを使用して、任意のウィジェットのタッチ イベントを有効/無効にすることができます。ドキュメントによると

吸収が true の場合、このウィジェットは、それ自体でヒット テストを終了することにより、サブツリーがポインター イベントを受信しないようにします。レイアウト中にスペースを消費し、通常どおり子を描画します。RenderBox.hitTest から true を返すため、その子が検出されたイベントのターゲットになるのを防ぐだけです。

あなたの場合、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)),
);

あなたはできる

于 2020-02-24T06:26:32.640 に答える