我想在 Flutter 中使用 ListWheelScrollView,但仅在其选定后输出选定项。 所以因为现在当我一次从底部到顶部时,它会输出每个项目...
这是我的代码:
List<int> numbers = List.generate(3, (index) => index + 1);
void _updateSelectedCardType(int index) {
setState(() {
_selectedIndex = index;
switch (index) {
case 0:
selectedCard = '1';
break;
case 1:
selectedCard = '2';
break;
case 2:
selectedCard = '3';
break;
}
sleep(const Duration(seconds: 1));
print('Selected card type: $selectedCard');
}
这里我试着只在一秒钟后输出它所以如果它被选中并且没有改变我可以打印它...... 关于如何做的任何想法
试试看
import 'dart:async';
import 'package:flutter/material.dart';
class MyWidget extends StatefulWidget {
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
int _selectedIndex = 0;
String selectedCard = '1';
Timer? _timer;
List<int> numbers = List.generate(3, (index) => index + 1);
@override
void dispose() {
_timer?.cancel();
super.dispose();
}
void _onSelectedItemChanged(int index) {
setState(() {
_selectedIndex = index;
switch (index) {
case 0:
selectedCard = '1';
break;
case 1:
selectedCard = '2';
break;
case 2:
selectedCard = '3';
break;
}
});
_timer?.cancel();
_timer = Timer(Duration(milliseconds: 500), () {
print('Selected card type: $selectedCard');
});
}
@override
Widget build(BuildContext context) {
return ListWheelScrollView(
itemExtent: 50,
children: numbers.map((number) {
return Center(child: Text('$number'));
}).toList(),
onSelectedItemChanged: _onSelectedItemChanged,
physics: FixedExtentScrollPhysics(),
);
}
}