Flutter中使用Dio请求API时,如何判断服务端返回的Data为空数组?
解决Flutter中Dio请求后判断Data是否为空数组的问题
嘿,这个场景我太熟悉了——服务端返回的Data字段一会儿是空数组、一会儿是对象,确实有点头疼。不过咱们可以通过类型判断+空值检查轻松搞定,下面给你两种实用的实现方式:
方法一:直接判断类型并检查空数组
这是最直接的方式,先把Data字段取出来,然后用is关键字判断它的类型,再针对性处理:
// 假设你已经通过Dio拿到了响应结果 Response response = await dio.get('你的API地址'); dynamic dataField = response.data['Data']; // 先处理null的极端情况(虽然你的例子里没提到,但加上更严谨) if (dataField == null) { print("Data字段为null"); } // 判断是否为空数组 else if (dataField is List && dataField.isEmpty) { print("Data是空数组,没有数据"); // 这里写空数组对应的业务逻辑,比如显示空状态页面 } // 处理有数据的对象情况 else if (dataField is Map) { print("Data是有效对象,id: ${dataField['id']}, pass: ${dataField['pass']}"); // 这里解析对象数据,比如转成实体类或者直接使用 } // 处理其他意外类型(比如字符串、数字等) else { print("Data字段类型不符合预期,类型是${dataField.runtimeType}"); }
方法二:结合runtimeType判断(可选)
如果你想更明确地判断是不是List类型,也可以用runtimeType,不过is关键字更推荐,因为它会考虑继承关系:
if (dataField.runtimeType == List && (dataField as List).isEmpty) { // 空数组逻辑 }
小提示
如果你的项目里经常遇到这种不固定类型的返回字段,也可以考虑自定义Dio的响应转换器,把这种动态类型统一处理成你需要的结构,这样后续代码会更整洁~
内容的提问来源于stack exchange,提问作者Huu Bao Nguyen
相关产品推荐
相关产品推荐

