onTap在ListWheelScrollView子项上不起作用-Flutter

时间:2019-01-22 18:42:06

标签: dart flutter

我正在尝试使用ListWheelScrollView列出项目,并且希望对项目具有tapping的功能,但似乎onTap无效。

这是一个简单的代码


List<int> numbers = [
            1,
            2,
            3,
            4,
            5
          ];

...


Container(
  height: 200,
  child: ListWheelScrollView(
    controller: fixedExtentScrollController,
    physics: FixedExtentScrollPhysics(),
    children: numbers.map((month) {
      return Card(
          child: GestureDetector(
            onTap: () {
              print(123);
            },
            child: Row(
              children: <Widget>[
                Expanded(
                    child: Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        month.toString(),
                        style: TextStyle(fontSize: 18.0),
                      ),
                    )),
              ],
            ),
          ));
    }).toList(),
    itemExtent: 60.0,
  ),
)

此代码是否有问题?我敢肯定,类似的事情将在ListView或其他滚动小部件上起作用。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。希望对您有所帮助。

  1. 在State类中创建一个int变量。

class _MenuWheelState扩展了状态{ int _vIndiceWheel;

    ListWheelScrollView的onSelectedItemChanged函数中的
  1. 设置变量:

    onSelectedItemChanged :(值更改){ setState((){ _vIndiceWheel = ValueChanged; }); }

  2. 创建一个GestureDetecture并将ListWheelScrollView放入其中:

    GestureDetector( 子级:ListWheelScrollView(...

  3. 在GestureDetecture上创建onTap函数,如下所示:

    //这是必需的 如果(_vIndiceWheel == null){ _vIndiceWheel = 0; }

    开关(_vIndiceWheel){ 案例0: { Navigator.push( 上下文 MaterialPageRoute( 生成器:(上下文){ 返回YourSecondScreen(); }, ...