Flutter中如何禁用MultiSelectDialogField的已选项界面展示?
解决MultiSelectDialogField隐藏界面已选项展示的问题
你使用的是multi_select_flutter: ^4.1.3,要实现「仅弹窗保留已选状态,界面不展示已选项」,调整两个关键属性即可:
- 用
buttonText自定义触发按钮的固定文本,替换默认的已选值展示 - 确保
initialValue绑定已选列表,维持弹窗内的选中状态
修改后的完整代码如下:
Container( height: height * 0.07, child: MultiSelectDialogField<String>( title: Text('Select your pet allergies'), items: allergies .map((allergy) => MultiSelectItem<String>(allergy, allergy)) .toList(), listType: MultiSelectListType.CHIP, // 自定义按钮文本,固定显示提示内容,不展示已选项 buttonText: Text('选择宠物过敏源'), // 绑定已选值,让弹窗打开时显示正确的选中状态 initialValue: selectedAllergies, onConfirm: (List<String> values) { setState(() { selectedAllergies = values; }); }, chipDisplay: null, // 禁用界面上的芯片式已选项展示 ), ),
List<String> allergies = [ 'Animal Allergy', 'Drug Allergy', 'Environmental Allergy', 'Food Allergy', 'Pollen Allergy', 'Miscellaneous Allergy', 'Miscellaneous Contraindication', 'Plant Allergy' ];
原理说明:
chipDisplay: null已经能关闭界面上的芯片展示,但默认按钮会自动拼接已选值显示,通过buttonText设置固定文本就能彻底隐藏已选项的界面展示。initialValue绑定selectedAllergies后,弹窗打开时会自动标记之前选中的选项,完全不影响弹窗内的选中状态管理。
内容的提问来源于stack exchange,提问作者Dasun Dola
相关产品推荐
相关产品推荐

