Flutter FutureBuilder始终返回null

时间:2020-03-30 10:40:22

标签: flutter dart

即使http请求成功从api获取数据,FutureBuilder仍返回null。

我在我的数据模型中使用了json_serializable和freeze程序包,此错误与它们有关还是纯粹来自于flutter / dart?

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();
        },
      ),

1 个答案:

答案 0 :(得分:0)

我只是忘了运行调试项目

我把这个问题留在个人的提醒下,对于在那里的新开发人员不要犯同样的错误。还有让我的朋友嘲笑我哈哈