我正在尝试使用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或其他滚动小部件上使用。

最佳答案

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

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

  • _MenuWheelState类扩展State {
    int _vIndiceWheel;

    ListWheelScrollView的onSelectedItemChanged函数中的
  • 设置变量:
    onSelectedItemChanged:(ValueChanged){
    setState((){
    _vIndiceWheel = ValueChanged; });
    },
  • 创建一个GestureDetecture并将ListWheelScrollView放入其中:
    GestureDetector(
    子级:ListWheelScrollView(...
  • 在GestureDetecture上创建onTap函数,如下所示:
    //这是必要的
    如果(_vIndiceWheel == null){
    _vIndiceWheel = 0;
    }
    开关(_vIndiceWheel){
    案例0:
    {
    Navigator.push(
    上下文
    MaterialPageRoute(
    生成器:(上下文){
    返回YourSecondScreen();
    },
    ...
  • 关于dart - onTap在ListWheelScrollView子项上不起作用-Flutter,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54314573/

    10-10 18:08