valueByType<T> function
dynamic
valueByType<T>(})
值转换
dValue
默认值
Implementation
valueByType<T>(
value,
Type type, {
String stack: "",
ItemBuild<T>? itemBuild,
bool nullable = false,
T? dValue,
}) {
if (value == null) {
// debugPrint("valueByType $stack : value is null");
if (nullable) return null;
if (type == String) {
return null;
} else if (type == int) {
return dValue ?? 0;
} else if (type == double) {
return dValue ?? 0.00;
} else if (type == bool) {
return dValue ?? false;
} else if (type == List) {
return dValue ?? [].cast<T>();
} else if (type == Map) {
return dValue ?? {};
}
return null;
} else {
if (value.runtimeType == type) return value;
// debugPrint("$stack : ${value.runtimeType} is not $type type");
if (type == String) {
return value.toString();
} else if (type == int) {
return int.tryParse(value.toString());
} else if (type == double) {
return DoubleUtil.parse(value.toString());
} else if (type == bool) {
return BoolUtil.parse(value.toString());
} else if (type == List) {
return ListUtil.parse<T>(value, itemBuild: itemBuild);
} else if (type == Map) {
if (value is List) {
Map<String, dynamic> newValue = {};
int index = 0;
value.forEach((item) {
newValue.update("$index", (v) => item, ifAbsent: () => item);
});
return newValue;
} else {
return value;
}
}
}
}