咨询Dart中三元运算符重复变量的简化解决方案
Dart中简化三元运算符重复变量的实现方案
针对你提出的需求,有几种简洁的方案可以避免重复引用变量,甚至让变量仅出现一次:
1. 利用乘法因子简化(最直观)
把原逻辑转化为统一的乘法运算,只需要两次引用变量,比原代码更紧凑:
final phoneHeight = PhoneSize.deviceHeight(context); final sectionHeight = phoneHeight * (phoneHeight >= 1000 ? 0.85 : 1.0);
核心思路是:当条件不满足时,乘以1.0保持原值,避免重复写phoneHeight。
2. 使用run方法实现变量仅出现一次
如果希望变量(或表达式结果)仅被计算和引用一次,可以借助Dart内置的Object.run方法,将表达式结果传入闭包处理:
// 不需要单独声明phoneHeight的情况 final sectionHeight = PhoneSize.deviceHeight(context).run((h) => h >= 1000 ? h * 0.85 : h); // 需要复用phoneHeight的情况 final phoneHeight = PhoneSize.deviceHeight(context); final sectionHeight = phoneHeight.run((h) => h >= 1000 ? h * 0.85 : h);
这种方式下,PhoneSize.deviceHeight(context)只执行一次,闭包内的h作为别名使用,完全避免重复引用原始变量。
3. Dart 3.0+:使用switch表达式(可读性更强)
如果使用Dart 3.0及以上版本,可以用switch表达式的模式绑定特性,同样实现变量仅出现一次:
final sectionHeight = switch (PhoneSize.deviceHeight(context)) { final h when h >= 1000 => h * 0.85, final h => h, };
这种写法分支清晰,适合后续可能扩展更多条件的场景。
内容的提问来源于stack exchange,提问作者Palash Dey
相关产品推荐
相关产品推荐

