mcpField
C
check-if-an-object-is-truthy-in-dart

check-if-an-object-is-truthy-in-dart

github.com/rodydavis开发6046 次安装2 周前更新
代码仓库

关于 check-if-an-object-is-truthy-in-dart

这项 Dart 技能介绍如何通过扩展和辅助函数,为可空对象添加类似 JavaScript 的真值判断,适合需要在条件或赋值中将不同类型值转为布尔值的 Dart 开发者。

主要功能

  1. 01为可空对象添加扩展 getter
  2. 02使用辅助函数判断真值
  3. 03处理 null、布尔值和数字

适用场景

  1. 01在条件中判断不同类型的值
  2. 02将可空值转换为布尔赋值

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/rodydavis/skills --skill check-if-an-object-is-truthy-in-dart

安装后在 Claude Code 中输入/check-if-an-object-is-truthy-in-dart确认已加载。

详细介绍

在 Dart 中检查对象是否为真值

如果你来自 JavaScript 这类语言,可能已经习惯检查对象是否为真值。

if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

在 Dart 中,你需要显式检查对象是否不为 null、是否为 true/false,或者根据类型判断该值是否为 true。

不过,可以使用 Dart 扩展来添加真值功能。

extension on Object? {
  bool get isTruthy => truthy(this);
}

bool truthy(Object? val) {
  if (val == null) return false;
  if (val is bool) return val;
  if (val is num && val == 0) return false;
  if (val is String && (val == 'false' || val == '')) return false;
  if (val is Iterable && val.isEmpty) return false;
  if (val is Map && val.isEmpty) return false;
  return true;
}

这样一来,任何对象都可以在 if 语句或值赋值中作为真值进行求值。

输出如下:

(null, false)
(, false)
(false, false)
(true, true)
(0, false)
(1, true)
(false, false)
(true, true)
([], false)
([1, 2, 3], true)
({}, false)
({1, 2, 3}, true)
({a: 1, b: 2}, true)

演示

评论

支持 Markdown