asCast<T> method
T?
asCast<T>({
- T? def,
Attempts to cast the dynamic value to a specified type T.
If the value is null or cannot be cast to T, returns the provided default value or null.
Supports basic types such as int, double, num, String, bool, List, ObjectId, and DateTime.
def The default value to return if casting fails.
Returns the value cast to type T or the default value.
Implementation
T? asCast<T>({T? def}) {
var value = this as Object?;
if (value == null) {
return def;
}
switch (T.toString()) {
case 'int':
return value.asInt(def: def as int) as T;
case 'double':
return value.asDouble(def: def as double) as T;
case 'num':
return value.asNum(def: def as num) as T;
case 'String':
return value.asString(def: def as String) as T;
case 'bool':
return value.asBool(def: def as bool) as T;
case 'List':
return value.asList(def: def as List) as T;
case 'ObjectId':
return value.asObjectId(def: def as ObjectId) as T;
case 'DateTime':
return value.asDateTime(def: def as DateTime) as T;
case 'int?':
int? defVal = (def) as int?;
return value.asInt(def: defVal) as T?;
case 'double?':
var defVal = (def) as double?;
return value.asDouble(def: defVal) as T?;
case 'num?':
var defVal = (def) as num?;
return value.asNum(def: defVal) as T?;
case 'String?':
var defVal = (def) as String?;
return value.asString(def: defVal) as T?;
case 'bool?':
var defVal = (def) as bool?;
return value.asBool(def: defVal) as T?;
case 'List?':
var defVal = (def) as List?;
return value.asList(def: defVal) as T?;
case 'ObjectId?':
var defVal = (def) as ObjectId?;
return value.asObjectId(def: defVal) as T?;
case 'DateTime?':
var defVal = (def) as DateTime?;
return value.asDateTime(def: defVal) as T?;
default:
return def;
}
}