错误代码 嗨,我是新手,对于关于dropdownbutton的问题,关于将多个dropdownbutton使用相同的值有疑问。
根据我对错误的理解,这是由于在同一活动中为2个或更多下拉按钮使用了相同的列表。
我如何解决此错误,但仍然可以将列表重新用于2个或更多下拉按钮?
String _value1; String _value2; final List<String> nameList = <String>[ "Name1", "Name2", "Name3", "Name4", "Name5", "Name6", "Name7", "Name8" ]; @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( elevation: 2.0, title: Text('Hello'), ), body: ListView( children: <Widget>[ Row( children: <Widget>[ Text('Name: '), Center( child: DropdownButton( value: _value1, onChanged: (value) { setState(() { _value1 = value; }); }, items: nameList.map( (item) { return DropdownMenuItem( value: item, child: new Text(item), ); }, ).toList(), ), ), ], ), Row( children: <Widget>[ Text('Name: '), Center( child: DropdownButton( value: _value2, onChanged: (value) { setState(() { _value2 = value; }); }, items: nameList.map( (item) { return DropdownMenuItem( value: item, child: new Text(item), ); }, ).toList(), ), ), ], ), ], ), backgroundColor: Colors.grey[200], ); } }
我遇到了完全相同的错误,多个Dropdowns都从同一个静态列表中获取数据,唯一的区别是在我的情况下,它是对象列表,而不是字符串列表。
因此,如果它是静态列表,则不可能为空,列表中没有重复的值,并且您已经确定value不为空?那么剩下的唯一选择item.value就是与value
value
item.value
就我而言,因为它是一个对象列表,所以我必须覆盖对象类中的operator ==和hashcode方法。
operator ==
hashcode
bool operator ==(dynamic other) => other != null && other is TimeSelection && this.hour == other.hour; @override int get hashCode => super.hashCode;
就是这样。我不必初始化_value1或_value2
_value1
_value2