【问题标题】:Flutter FutureBuilder always return nullFlutter FutureBuilder 总是返回 null
【发布时间】: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 方法相关的内容

标签: flutter dart


【解决方案1】:

我只是忘记在调试中运行我的项目

我把这个问题留在这里作为个人提醒,并提醒新开发人员不要犯同样的错误。让我的朋友们笑话我哈哈

【讨论】:

    猜你喜欢
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 2021-05-04
    • 1970-01-01
    • 2021-09-16
    • 2022-10-21
    • 2021-10-08
    相关资源
    最近更新 更多