【发布时间】:2020-07-10 17:11:34
【问题描述】:
即使 http 请求成功从 api 获取数据,FutureBuilder 也会继续返回 null。
我在我的数据模型中使用了 json_serializable 和 freezed 包,这个错误是与它们有关还是纯粹来自颤振/飞镖?
Http 请求
Future<VitalSignResponse> getLatestVitalSign(String medicalNo) async {
final String url = Api.baseUrl +
'VitalSignByMedicalNoLatest?AccessKey=${Api.accessKey}&MedicalNo=$medicalNo';
Response res = await Dio().get(url);
print('api res: ${res.data}'); // 'api res: the correct data from api'
print('serialize: ${VitalSignResponse.fromJson(json.decode(res.data))}'); // print out nothing
return VitalSignResponse.fromJson(json.decode(res.data));
}
数据模型
@freezed
abstract class VitalSignResponse with _$VitalSignResponse {
@JsonSerializable(explicitToJson: true)
const factory VitalSignResponse(
final String status,
final String errorCode,
final List<VitalSign> data,
) = _VitalSignResponse;
factory VitalSignResponse.fromJson(Map<String, dynamic> json) =>
_$VitalSignResponseFromJson(json);
}
未来的构建器逻辑
FutureBuilder(
future: service.getLatestVitalSign(patientBloc.patient.medicalNo),
builder: (
BuildContext context,
AsyncSnapshot snapshot,
) {
print(snapshot.data); // null
if (snapshot.connectionState == ConnectionState.waiting)
return Center(child: CircularProgressIndicator());
if (snapshot.hasData) {
// show data
}
return Container();
},
),
【问题讨论】:
-
print(VitalSignResponse.fromJson(json.decode(res.data)))你看到了什么?非空的东西? -
@pskink 它不会向控制台输出任何内容
-
@pskink 还是一无所有
-
@pskink 是的,我根本看不到
serialize:。 -
@pskink 我在答案中发布了我可以在 *.g.dart 文件中找到与 fromJson 方法相关的内容