localJsonToModel<T> static method
通用的 JSON 解析为对象的方法。
从本地 asset 或沙盒文件中读取 JSON 并解析为对象。
assetPath JSON 文件路径(asset 或本地文件)
fromJson JSON 映射到 T 类型对象的工厂函数
fromSandbox 是否从沙盒目录读取(默认false,即从asset读取)
返回值: Future<T?> 解析后的对象,文件不存在或异常时返回 null
使用示例:
WheelModel? model = await JsonUtil.localJsonToModel<WheelModel>(
'assets/data/wheel.json',
(json) => WheelModel.fromJson(json),
);
Implementation
static Future<T?> localJsonToModel<T>(
String assetPath,
T Function(Map<String, dynamic>) fromJson, {
bool fromSandbox = false,
}) async {
String response;
if (fromSandbox) {
final file = File(assetPath);
if (!file.existsSync()) {
return null;
}
response = await file.readAsString();
} else {
try {
response = await rootBundle.loadString(assetPath);
} catch (e) {
return null;
}
}
final data = json.decode(response);
return fromJson(data);
}