Flutter/Dart:如何为多行多选项下拉菜单的条件判断代码添加更多参数
解决多选项下拉菜单的赋值逻辑扩展问题
嘿,这个需求太常见了!原来的三元表达式只适合简单的二选一场景,要扩展多个选项的话,咱们换两种更灵活、易维护的写法:
方案一:对象映射(推荐)
这种方式把所有的newValue和对应的业务线变量做成键值对,后续加新选项只需要在对象里加一行,逻辑清晰又好维护:
// 先定义映射关系,新增选项直接在这里添加键值对即可 const busLineMap = { 'M100007': businessLine2_01, 'M100008': businessLine2_02, 'M100009': businessLine2_03, 'M100010': businessLine2_04, 'M100011': businessLine2_05, 'M100012': businessLine2_06 }; // 根据newValue获取对应值,还可以设置默认值处理匹配不到的情况 const selectedBusLine1 = busLineMap[newValue] || businessLine2_02; // 这里的默认值可以换成你需要的兜底选项
为什么推荐这个? 结构一目了然,新增或修改选项不用动核心逻辑,可读性和扩展性拉满,尤其适合这种固定键值对应的场景。
方案二:Switch语句
如果某个选项需要额外做一些逻辑处理(比如选中特定值时触发其他操作),用switch会更顺手:
let selectedBusLine1; switch(newValue) { case 'M100007': selectedBusLine1 = businessLine2_01; // 这里可以加额外逻辑,比如console.log或者调用其他函数 break; case 'M100008': selectedBusLine1 = businessLine2_02; break; case 'M100009': selectedBusLine1 = businessLine2_03; break; case 'M100010': selectedBusLine1 = businessLine2_04; break; case 'M100011': selectedBusLine1 = businessLine2_05; break; case 'M100012': selectedBusLine1 = businessLine2_06; break; default: selectedBusLine1 = businessLine2_02; // 兜底的默认值 }
额外小提示(不推荐)
如果你的businessLine变量命名有严格规律(比如M100007对应businessLine2_01,数字刚好差6),也可以用动态变量名拼接,但非常不推荐——因为一旦变量名或规律改变,很容易出bug,维护成本极高:
// 仅做演示,实际项目不建议用 const lineNum = parseInt(newValue.slice(-1)) - 6; // 7-6=1,8-6=2... const selectedBusLine1 = window[`businessLine2_0${lineNum}`] || businessLine2_02;
内容的提问来源于stack exchange,提问作者JoshuaaMarkk
相关产品推荐
相关产品推荐

