如何在下拉时以不同方式呈现DropdownButton
项目?
我通过使用DropdownMenuItem
找到了一种解决方案。它的build()
会针对关闭和下拉状态分别执行。您可以使用上下文来判断它是关闭状态还是下拉状态,例如,您可以检查祖先有状态的widget。
我使用类似于以下虚拟代码片段:
DropdownButton<String>(
value: selectedItem.id,
items: items.map((item) {
return DropdownMenuItem<String>(
value: item.id,
child: Builder(builder: (BuildContext context) {
final bool isDropDown = context.ancestorStateOfType(TypeMatcher<PageState>()) == null;
if (isDropDown) {
return Text(item.name);
} else {
return Text(item.name, style: TextStyle(color: Colors.red));
}
},)
);
}).toList(),
);
其中 items 是 id-name 实例列表,PageState 则是我的自有有状态小部件的状态。