Flutter中用户选中Dropdownlist选项后如何禁用该下拉列表
实现方案
- 首先在当前页面的State类中新增一个布尔状态字段,用来控制下拉框的可用状态,默认值为false(即可正常点击选择):
bool _isDropdownDisabled = false;
- 核心逻辑:Flutter中
DropdownButton的onChanged属性被赋值为null时,组件会自动进入禁用状态,无法点击展开下拉列表。我们只需要在用户选中条目后将控制状态改为true,即可实现需求。 - 改造后的完整代码如下:
child: DropdownButton<Partner>( value: _selectedLab, // 用户选中的下拉条目值 hint: Text("Select Lab"), isExpanded: true, // 可自定义禁用状态下的提示文本 disabledHint: Text("已选择实验室,不可修改"), items: data.map((Partner data) => DropdownMenuItem<Partner>( child: Text("${data.partnerName}"), value: data, )).toList().cast<DropdownMenuItem<Partner>>(), // 根据禁用状态判断是否赋值onChanged回调 onChanged: _isDropdownDisabled ? null : (val) { setState(() { _selectedLab = val!; encLabId = val.encPartnerId; getTestByLabResult = getTestByLab(); // 选中后将下拉框设置为禁用状态 _isDropdownDisabled = true; }); }, ),
如果后续需要重新启用下拉框,只需要在对应业务逻辑中调用setState将_isDropdownDisabled改回false即可。
内容的提问来源于stack exchange,提问作者Toujo
相关产品推荐
相关产品推荐

