Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart DropdownMenuItem如何获取文本小部件的字符串数据 列出部门=[]; @凌驾 void initState(){ super.initState(); 部门添加(下拉菜单项)( 值:“DEP0000001”, child:Text('IT-SAP'), )); 部门添加(下拉菜单项)( 值:“DEP0000002”, 子项:文本('HR-Admin'), )); 部门添加(下拉菜单项)( 值:“DEP0000003”, 子:文本(“工程”), )); } @凌驾 小部件构建(构建上下文){ 返回脚手架( 正文:ListView( 儿童:[ 下拉按钮( 项目:运输署,, 一旦更改:(值){ 设置状态(){ _deptCode=值; }); }, 提示:文本(“选择部门”), 值:_deptCode, ), ], ), ); }_Dart_Flutter - Fatal编程技术网

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);
}