Dart DropdownMenuItem如何获取文本小部件的字符串数据 列出部门=[]; @凌驾 void initState(){ super.initState(); 部门添加(下拉菜单项)( 值:“DEP0000001”, child:Text('IT-SAP'), )); 部门添加(下拉菜单项)( 值:“DEP0000002”, 子项:文本('HR-Admin'), )); 部门添加(下拉菜单项)( 值:“DEP0000003”, 子:文本(“工程”), )); } @凌驾 小部件构建(构建上下文){ 返回脚手架( 正文:ListView( 儿童:[ 下拉按钮( 项目:运输署,, 一旦更改:(值){ 设置状态(){ _deptCode=值; }); }, 提示:文本(“选择部门”), 值:_deptCode, ), ], ), ); }
在这里我可以得到部门代码的值。不过,我还想知道部门名称。我试图获取字符串数据文本小部件,但我认为这是不可能的。有什么方法吗?您可以维护一个地图,然后使用它来获取数据。 例如:Dart DropdownMenuItem如何获取文本小部件的字符串数据 列出部门=[]; @凌驾 void initState(){ super.initState(); 部门添加(下拉菜单项)( 值:“DEP0000001”, child:Text('IT-SAP'), )); 部门添加(下拉菜单项)( 值:“DEP0000002”, 子项:文本('HR-Admin'), )); 部门添加(下拉菜单项)( 值:“DEP0000003”, 子:文本(“工程”), )); } @凌驾 小部件构建(构建上下文){ 返回脚手架( 正文:ListView( 儿童:[ 下拉按钮( 项目:运输署,, 一旦更改:(值){ 设置状态(){ _deptCode=值; }); }, 提示:文本(“选择部门”), 值:_deptCode, ), ], ), ); },dart,flutter,Dart,Flutter,在这里我可以得到部门代码的值。不过,我还想知道部门名称。我试图获取字符串数据文本小部件,但我认为这是不可能的。有什么方法吗?您可以维护一个地图,然后使用它来获取数据。 例如: List<DropdownMenuItem<String>> department = []; @override void initState() { super.initState(); department.add(DropdownMenuItem( value: 'DEP0
List<DropdownMenuItem<String>> department = [];
@override
void initState() {
super.initState();
department.add(DropdownMenuItem(
value: 'DEP0000001',
child: Text('IT - SAP'),
));
department.add(DropdownMenuItem(
value: 'DEP0000002',
child: Text('HR - Admin'),
));
department.add(DropdownMenuItem(
value: 'DEP0000003',
child: Text('Engineering'),
));
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: <Widget>[
DropdownButton(
items: department,
onChanged: (value) {
setState(() {
_deptCode = value;
});
},
hint: Text('Select Department'),
value: _deptCode,
),
],
),
);
}
稍后,您可以使用此工具获取数据
var data = {
'DEP0000001':'IT - SAP',
'DEP0000002' : 'HR - Admin',
'DEP0000003' : 'Engineering'
};
...
void initState() {
super.initState();
department.add(DropdownMenuItem(
value: 'DEP0000001',
child: Text(data['DEP0000001']),
));
department.add(DropdownMenuItem(
value: 'DEP0000002',
child: Text(data['DEP0000002]),
));
department.add(DropdownMenuItem(
value: 'DEP0000003',
child: Text(data['DEP0000003']),
));
}
希望有帮助:)类MyHomePageState扩展状态{
变量列表=[
{“name”:“IT-SAP”,“id”:“DEP0000001”},
{“name”:“HR-Admin”,“id”:“DEP0000002”},
{“name”:“Engineering”,“id”:“DEP0000003”},
];
var_deptCode;
@凌驾
void initState(){
_deptCode=list.first;
super.initState();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView(
儿童:[
下拉按钮(
项目:清单
.map((f)=>下拉菜单项(
值:f,
子项:文本(f[“名称]),
))
.toList(),
一旦更改:(值){
设置状态(){
打印(值[“名称]);
_deptCode=值;
});
},
提示:文本(“选择部门”),
值:_deptCode,
),
],
),
);
}
}
您也可以使用“item.child.data”,而无需维护“Map”
List searchDropDownByValue(字符串关键字,项){
列表ret=[];
如果(关键字!=null)&&
项目!=null&&
关键字.isNotEmpty){
关键字.split(“”).forEach((k){
int i=0;
项目。forEach((项目){
如果(k)不是空的&&
(项目1.child.data)
.toString()
.toLowerCase()
.contains(k.toLowerCase()){
补编(i);
}
i++;
});
});
}
if(关键字.isEmpty){
ret=
Iterable.generate(items.length.toList();
}
返回(ret);
}
print("The department ${data[_deptCode]} has code of $_deptCode");
class MyHomePageState extends State<MyHomePage> {
var list = [
{"name": "IT - SAP", "id": "DEP0000001"},
{"name": "HR - Admin", "id": "DEP0000002"},
{"name": "Engineering", "id": "DEP0000003"},
];
var _deptCode;
@override
void initState() {
_deptCode = list.first;
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: ListView(
children: <Widget>[
DropdownButton(
items: list
.map((f) => DropdownMenuItem(
value: f,
child: Text(f["name"]),
))
.toList(),
onChanged: (value) {
setState(() {
print(value["name"]);
_deptCode = value;
});
},
hint: Text('Select Department'),
value: _deptCode,
),
],
),
);
}
}
List<int> searchDropDownByValue(String keyword, items) {
List<int> ret = [];
if (keyword != null &&
items != null &&
keyword.isNotEmpty) {
keyword.split(" ").forEach((k) {
int i = 0;
items.forEach((item) {
if (k.isNotEmpty &&
(item.child.data
.toString()
.toLowerCase()
.contains(k.toLowerCase()))) {
ret.add(i);
}
i++;
});
});
}
if (keyword.isEmpty) {
ret =
Iterable<int>.generate(items.length).toList();
}
return (ret);
}