在Flutter中,Select组件通常指下拉选择框,可以通过以下方式实现:
1. 使用 DropdownButton(推荐)
import 'package:flutter/material.dart';
class MySelectWidget extends StatefulWidget {
@override
_MySelectWidgetState createState() => _MySelectWidgetState();
}
class _MySelectWidgetState extends State<MySelectWidget> {
String? _selectedValue;
final List<String> _options = [
'选项1',
'选项2',
'选项3',
'选项4',
];
@override
Widget build(BuildContext context) {
return DropdownButton<String>(
value: _selectedValue,
hint: Text('请选择'),
items: _options.map((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
onChanged: (String? newValue) {
setState(() {
_selectedValue = newValue;
});
},
);
}
}
2. 主要属性说明
- value: 当前选中的值
- items: 选项列表,必须是DropdownMenuItem列表
- onChanged: 选择改变时的回调函数
- hint: 未选择时的提示文本
- disabledHint: 禁用时的提示文本
- icon: 自定义下拉图标
- elevation: 下拉菜单的阴影高度
3. 完整示例
DropdownButton<String>(
value: _selectedValue,
icon: Icon(Icons.arrow_drop_down),
iconSize: 24,
elevation: 16,
style: TextStyle(color: Colors.deepPurple),
underline: Container(
height: 2,
color: Colors.deepPurpleAccent,
),
onChanged: (String? newValue) {
setState(() {
_selectedValue = newValue;
});
},
items: _options.map<DropdownMenuItem<String>>((String value) {
return DropdownMenuItem<String>(
value: value,
child: Text(value),
);
}).toList(),
)
4. 使用第三方库
也可以使用第三方库如flutter_dropdown获得更多自定义选项。