Files
skills/skills/dart_truthy/SKILL.md
T
2026-02-03 12:27:57 -08:00

70 lines
1.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: check-if-an-object-is-truthy-in-dart
description: Learn how to extend Dart's functionality to implement JavaScript-style "truthy" checks for easier conditional logic and value evaluations.
metadata:
url: https://rodydavis.com/posts/dart/truthy
last_modified: Tue, 03 Feb 2026 20:04:34 GMT
---
# Check if an Object is Truthy in Dart
If you are coming from language like JavaScript you may be used to checking if an object is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy).
```
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)
```
In Dart you need to explicitly check if an object is not null, true/false or determine if the value is true based on the type.
It is possible however to use Dart extensions to add the truthy capability.
```
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;
}
```
This will now make it possible for any object to be evaluated as a truthy value in if statements or value assignments.
Prints the following:
```
(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)
```
## Demo