flutter如何实现滚动选择器
在Flutter中,如何实现一个类似iOS或Android原生的滚动选择器?需要支持自定义样式和选中回调功能。
2 回复
Flutter中可使用CupertinoPicker(iOS风格)或flutter_picker等第三方库实现滚动选择器。通过设置itemExtent和onSelectedItemChanged回调控制选项高度与选中事件。
更多关于flutter如何实现滚动选择器的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中实现滚动选择器,主要有以下几种方式:
1. CupertinoPicker(iOS风格)
CupertinoPicker(
itemExtent: 40,
onSelectedItemChanged: (int index) {
print('选中了: $index');
},
children: List<Widget>.generate(10, (int index) {
return Center(
child: Text('选项 $index'),
);
}),
)
2. ListWheelScrollView(自定义风格)
ListWheelScrollView(
itemExtent: 50,
diameterRatio: 1.5,
perspective: 0.003,
onSelectedItemChanged: (index) {
print('选中: $index');
},
children: List<Widget>.generate(20, (index) {
return Container(
alignment: Alignment.center,
child: Text('项目 $index'),
);
}),
)
3. 使用三方库 flutter_picker
在pubspec.yaml中添加:
dependencies:
flutter_picker: ^2.1.7
使用示例:
Picker(
adapter: PickerDataAdapter<String>(
pickerdata: ['选项1', '选项2', '选项3'],
),
title: Text('请选择'),
onConfirm: (Picker picker, List value) {
print(value.toString());
print(picker.getSelectedValues());
},
).showModal(context);
4. 日期时间选择器
// iOS风格
CupertinoDatePicker(
mode: CupertinoDatePickerMode.date,
onDateTimeChanged: (DateTime newDateTime) {
print(newDateTime);
},
)
// Material风格
showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2020),
lastDate: DateTime(2030),
)
选择哪种方式取决于你的设计需求:CupertinoPicker适合iOS风格,ListWheelScrollView可高度自定义,三方库提供更多功能。

