ListWheelScrollView 孩子无法识别 onTap()

Jos*_*dez 10 dart flutter

ListWheelScrollView 的子级无法识别点击。如何让 ListWheelScrollView 的孩子识别点击?我认为在孩子面前有某种可滚动的小部件可以防止孩子被点击。如果我将此代码放在列表视图中,则一切正常,但不适用于 listWheelScrollView

这是我的代码

import 'package:flutter/material.dart';

void main() {
runApp(
 MaterialApp(
   home: Scaffold(
     appBar: AppBar(
       title: Text(
         'List Wheel',
       ),
     ),
     body: myListWheel,
   ),
 ),
);
}

Widget myListWheel = ListWheelScrollView (
itemExtent: 100,
children: <Widget>[
 ListTile(
   enabled: true,
   onTap: () {
     print('Hello, World');
   },
   title: Text(
     'First',
   ),
   subtitle: Text(
     'this is subtitle'
   ),
 ),
 ListTile(
   enabled: true,
   onTap: () {
     print('Hello, World');
   },
   title: Text(
     'Second',
   ),
   subtitle: Text(
     'this is a subtitle'
   ),
 ),
],
);
Run Code Online (Sandbox Code Playgroud)

Thi*_*rry 1

上个月,Michael Lang (Cilestal)发布了一个新的clickable_list_wheel_widget 包

行为:

  • 当您单击所选项目时,onItemTapCallback将调用 ClickableListWheelScrollView
  • 当您单击另一个项目时,onItemTapCallback会调用ClickableListWheelScrollView,然后立即调用onSelectedItemChangedListWheelScrollView
import 'package:flutter/material.dart';
import 'package:clickable_list_wheel_view/clickable_list_wheel_widget.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text(
            'List Wheel',
          ),
        ),
        body: MyListWheel(),
      ),
    ),
  );
}

class MyListWheel extends StatelessWidget {
  final _scrollController = FixedExtentScrollController();
  final double _itemHeight = 100.0;
  final data = List.generate(20, (index) => 'Item $index');

  @override
  Widget build(BuildContext context) {
    return ClickableListWheelScrollView(
      scrollController: _scrollController,
      itemHeight: _itemHeight,
      itemCount: data.length,
      onItemTapCallback: (index) {
        print("onItemTapCallback index: $index");
      },
      child: ListWheelScrollView.useDelegate(
        controller: _scrollController,
        itemExtent: _itemHeight,
        physics: FixedExtentScrollPhysics(),
        overAndUnderCenterOpacity: 0.5,
        perspective: 0.002,
        onSelectedItemChanged: (index) {
          print("onSelectedItemChanged index: $index");
        },
        childDelegate: ListWheelChildBuilderDelegate(
          builder: (context, index) => ListTile(title: Text(data[index])),
          childCount: data.length,
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)