first commit
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
/// 后端字段的防御式取值工具
|
||||
///
|
||||
/// 后端没有统一的响应包装,字段类型也可能与预期不符(例如金额返回字符串、
|
||||
/// 数组返回 null)。所有 fromJson 都走这里取值,保证解析绝不抛异常。
|
||||
library;
|
||||
|
||||
int asInt(Object? value, {int fallback = 0}) {
|
||||
if (value is int) return value;
|
||||
if (value is num) return value.toInt();
|
||||
if (value is String) return int.tryParse(value) ?? fallback;
|
||||
return fallback;
|
||||
}
|
||||
|
||||
double asDouble(Object? value, {double fallback = 0}) {
|
||||
if (value is double) return value;
|
||||
if (value is num) return value.toDouble();
|
||||
if (value is String) return double.tryParse(value) ?? fallback;
|
||||
return fallback;
|
||||
}
|
||||
|
||||
String asString(Object? value, {String fallback = ''}) {
|
||||
if (value == null) return fallback;
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
/// 取字符串,空串时回退(用于分类名/图标这类必须有值的展示字段)
|
||||
String asNonEmpty(Object? value, String fallback) {
|
||||
final text = asString(value);
|
||||
return text.isEmpty ? fallback : text;
|
||||
}
|
||||
|
||||
/// 取对象数组,非 Map 的元素直接丢弃
|
||||
List<Map<String, dynamic>> asMapList(Object? value) {
|
||||
if (value is! List) return const [];
|
||||
return value.whereType<Map<String, dynamic>>().toList();
|
||||
}
|
||||
Reference in New Issue
Block a user