操所有人,操系统,操MOD /管理员!
要实现这一点,您需要根据当前选择的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);
}