You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化Dart中的双重三元运算,寻求更精简的代码实现

Dart嵌套三元表达式精简优化方案

原始实现代码

实现1

fromAddress
    Get.isDarkMode
        ? isCart
            ? Images.emptyCartDark
            : Images.noDataFoundDark
        : isCart
            ? Images.emptyCartLight
            : Images.noDataFoundLight,

实现2

isCart
    ? Get.isDarkMode
        ? Images.emptyCartDark
        : Images.emptyCartLight
    : Get.isDarkMode
        ? Images.noDataFoundDark
        : Images.noDataFoundLight,

精简优化方案

方案1:提取为工具方法(可读性最高)

把判断逻辑封装成独立方法,后续维护、修改更便捷:

String getEmptyStateImage() {
  if (isCart) {
    return Get.isDarkMode ? Images.emptyCartDark : Images.emptyCartLight;
  }
  return Get.isDarkMode ? Images.noDataFoundDark : Images.noDataFoundLight;
}

// 使用示例
fromAddress: getEmptyStateImage(),

方案2:利用命名规则+映射表简化

如果Images类的常量命名遵循固定规则(前缀+主题后缀),可以通过字符串拼接+映射表实现:

// 提前定义映射关系
final Map<String, String> emptyStateImages = {
  'emptyCartDark': Images.emptyCartDark,
  'emptyCartLight': Images.emptyCartLight,
  'noDataFoundDark': Images.noDataFoundDark,
  'noDataFoundLight': Images.noDataFoundLight,
};

// 使用示例
fromAddress: emptyStateImages[
  '${isCart ? 'emptyCart' : 'noDataFound'}${Get.isDarkMode ? 'Dark' : 'Light'}'
],

方案3:简化嵌套三元结构

调整逻辑顺序并添加分组括号,减少视觉嵌套感:

fromAddress: isCart 
    ? (Get.isDarkMode ? Images.emptyCartDark : Images.emptyCartLight)
    : (Get.isDarkMode ? Images.noDataFoundDark : Images.noDataFoundLight),

内容的提问来源于stack exchange,提问作者The Code Whisperer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:33:17