首页 > 解决方案 > DropdownMenuItem 如何获取 Text 小部件的字符串数据

问题描述

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

在这里我可以得到部门代码的值。但是,我也想获得部门名称。我试图获取字符串数据文本小部件,但我认为这是不可能的。有什么办法吗?

标签: dartflutter

解决方案


您可以维护一个Map并稍后使用它来获取数据。例如:

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']),
  ));
}

稍后您可以使用此获取数据

print("The department ${data[_deptCode]} has code of $_deptCode");

希望它有所帮助:)


推荐阅读