在Flutter中的另一个DropdownButton中选择选项时,禁用DropdownButton中的选项

问题描述 投票:-3回答:1

操所有人,操系统,操MOD /管理员!

flutter dropdown
1个回答
1
投票

要实现这一点,您需要根据当前选择的DropdownButtons启用或禁用某些东西,而不是将Text小部件作为DropdownMenuItem的子元素:

DropdownMenuItem<String>(
  value: value,
  child: CustomText(value, isDisabled: isDisabled(index, value)),
)

这将是作为选项显示的小部件

class CustomText extends StatelessWidget {
  final String text;
  final bool isDisabled;

  CustomText(this.text, {this.isDisabled = false});

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      child: Text(
        text,
        style: TextStyle(
            color: isDisabled
                ? Theme.of(context).unselectedWidgetColor
                : Theme.of(context).textTheme.title.color),
      ),
      onTap: isDisabled ? () {} : null,
    );
  }
}

请注意,如果禁用了该选项,则需要指定一个空的onTap,否则将触发DropdownMenuItem点按手势并选择该选项

这就是知道是否应禁用选项的条件

bool isDisabled(int index, String value) {
  return dropDowns[index] != value && dropDowns.contains(value);
}
© www.soinside.com 2019 - 2024. All rights reserved.