/// 后端字段的防御式取值工具 /// /// 后端没有统一的响应包装,字段类型也可能与预期不符(例如金额返回字符串、 /// 数组返回 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> asMapList(Object? value) { if (value is! List) return const []; return value.whereType>().toList(); }