【问题标题】:How to make flutter custom drop down button?如何制作颤振自定义下拉按钮?
【发布时间】:2018-08-08 00:18:52
【问题描述】:

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

谢谢,

【问题讨论】:

  • 检查 Dropdown 是如何实现的,我认为您需要在源实现中进行编辑才能做到这一点,因为它检查 value=null 或者 value 采用项目值而不是它的子集.
  • 您能更清楚地了解您要达到的目标吗?
  • @HemanthRaj 进行下拉值自定义而不是反映选择(选择 A 将使 dropdownButton 值 = A,如果我选择 A,dropdownButton 值 = B 会怎样)

标签: flutter drop-down-menu dropdownbutton


【解决方案1】:

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

items 是 id-name 实例的列表,PageState 是我自己的有状态小部件的状态。

【讨论】:

  • 所以这行得通。我遇到的问题是让下拉宽度扩大下拉项目大于按钮的位置...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 2018-11-23
  • 2019-07-06
  • 1970-01-01
  • 2023-02-13
  • 2021-10-24
  • 2021-04-22
相关资源
最近更新 更多