Skip to content

Instantly share code, notes, and snippets.

@rodydavis
Last active March 6, 2024 21:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rodydavis/83b08b7a3acf83f6a6056d810b564050 to your computer and use it in GitHub Desktop.
Save rodydavis/83b08b7a3acf83f6a6056d810b564050 to your computer and use it in GitHub Desktop.
Dart truthy extension
void main() {
print((null, null.isTruthy));
print(('', ''.isTruthy));
print(('false', 'false'.isTruthy));
print(('true', 'true'.isTruthy));
print((0, 0.isTruthy));
print((1, 1.isTruthy));
print((false, false.isTruthy));
print((true, true.isTruthy));
print(([], [].isTruthy));
print(([1, 2, 3], [1, 2, 3].isTruthy));
print(({}, {}.isTruthy));
print(({1, 2, 3}, {1, 2, 3}.isTruthy));
print(({'a': 1, 'b': 2}, {'a': 1, 'b': 2}.isTruthy));
}
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;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment