5

我想自定义DropDownButton,这样它就不会呈现DropdownItem. 相反,它应该在从下拉菜单中选择项目之前和之后呈现我的自定义布局/小部件。简单来说,我想自定义我的DropDownButton.

谢谢,

4

1 回答 1

6

DropdownButton下拉项目时如何以不同方式呈现项目?

我通过DropdownMenuItem. 它build()针对关闭和下拉状态分别执行。您可以使用上下文来确定它是关闭还是下拉状态。例如,您可以检查祖先有状态小部件。

我使用类似这个虚拟代码片段的东西:

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(),
);

其中itemsid-name实例的列表,而PageState是我自己的有状态小部件的状态。

于 2019-03-13T00:30:50.310 回答