Last active
March 6, 2024 21:07
-
-
Save rodydavis/83b08b7a3acf83f6a6056d810b564050 to your computer and use it in GitHub Desktop.
Dart truthy extension
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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