Flutter Dropdown默认值

问题描述 投票:0回答:1

我有一个充满模型的下拉菜单

  List<PetKeyValue> _data = [
    PetKeyValue(key: 'Perrito', value: '1'),
    PetKeyValue(key: 'Gatito', value: '2'),
  ];


  DropdownButton<PetKeyValue>(
     hint: Text(_selectedType),
      isExpanded: true,
      items: _data.map((data) {
        return DropdownMenuItem<PetKeyValue>(
          value: data,
          child: Text(data.key),
        );
      }).toList(),
      onChanged: (PetKeyValue value) {
        _selectedType = value.key;
        setState(() {
        _selectedTypeId = value.value;
        });
      },
    ),
  ),

并且要填充的类模型很简单

class PetKeyValue {
   String key;
   String value;

   PetKeyValue({this.key, this.value});
}

一切正常,但我无法为下拉菜单选择默认值

with

值:'text',我有一个错误,

值只接受一个PetKeyValue()实例,但都不起作用

enter image description here

flutter flutter-layout
1个回答
1
投票

value分配给列表中的现有对象。示例:

List<PetKeyValue> _data = [
  PetKeyValue(key: 'Perrito', value: '1'),
  PetKeyValue(key: 'Gatito', value: '2'),
];

...

DropdownButton<PetKeyValue>(
  value: _data[0],
  hint: Text("Hello"),
  isExpanded: true,
  items: _data.map((data) {
    return DropdownMenuItem<PetKeyValue>(
             value: data,
             child: Text(data.key),
           );
  }).toList(),
  onChanged: (value) {
    log(value.value);
  },
),

[value: PetKeyValue(key: 'Gatito', value: '2'),将失败,因为DropdownButton正在检查值是否在列表中,并且正在使用==运算符,而PetKeyValue(key: 'Gatito', value: '2') == PetKeyValue(key: 'Gatito', value: '2')实际上是false

© www.soinside.com 2019 - 2024. All rights reserved.