如何在 Flutter 中将 api 的 0 或空值设置为模型 class

How to set 0 or null value from api to Model class in Flutter

我正在调用具有混合值的 api。一些值 return 0 和其他值 return int。但是当我调用 api 时,出现了这个错误:

The getter 'actualTotalFee' was called on null.
Receiver: null
Tried calling: actualTotalFee

我的 api 回复是:

"summary": {
        "said_fee": 0,
        "nos": 11,
        "currentPayable": 0,
        "eximp-sem": 1,
        "sum_of_tution_fee": 173875,
        "common_scholarship": 0,
        "actual_total_fee": 0,
        "special_scholarship": 10000,
        "per_semester_fee": 0,
        "per_semester_fee_without_scholarship": 0,
        "total_paid": 190000,
        "total_current_due": -200000,
        "Due_Up_to_April": -200000,
        "total_due": -200000
      }

我的api调用方式:

// Getting Accounts Summery
  Future<AccountSummery> fetchAccountSummery(int userId) async {
    
    final url =
        Api.baseUrl + 'student_account_info_summary/$userId?token=$authToken';

    try {
      final response = await get(Uri.encodeFull(url));

      final loadedItem = json.decode(response.body);

      if (response.statusCode == 200) {
        return AccountSummery.fromJson(loadedItem['summary']);
      } else {
        throw Exception('Error in getting account summery');
      }
    } catch (error) {
      throw error;
    }
  }

我的模特通话:

class AccountSummery {
  final int actualTotalFee;
  final int specialScholarship;
  final int perSemesterWithoutScholarship;
  final int perSemesterFee;
  final int totalPaid;
  final double totalCurrentDue;
  final int totalDue;

  AccountSummery(
      {
        this.actualTotalFee,
        this.specialScholarship,
        this.perSemesterWithoutScholarship,
        this.perSemesterFee,
        this.totalPaid,
        this.totalCurrentDue,
        this.totalDue
      });

  factory AccountSummery.fromJson(Map<String, dynamic> json) {
    return AccountSummery(
      actualTotalFee: json['actual_total_fee'],
      specialScholarship: json['special_scholarship'],
      perSemesterWithoutScholarship: json['per_semester_fee_without_scholarship'],
      perSemesterFee: json['per_semester_fee'],
      totalPaid: json['total_paid'],
      totalCurrentDue: json['total_current_due'],
      totalDue: json['total_due'],
    );
  }
}

由于某些响应,如“actual_total_fee”、“per_semester_fee”等 returns 0 值,我的 api 响应方法失败了。

有什么方法可以 运行 api 方法或为我的模型 class 设置 0 值吗?

如果 API 具有空值,则使用此选项将默认值设置为 0:

actualTotalFee: json['actual_total_fee'] ?? 0,

在您的模型中

  actualTotalFee: json['actual_total_fee'] ?? 0,

在你的通话中

AccountSummeryObj?.actualTotalFee ?? 0

您可以通过两种方式完成:

  1. actualTotalFee: json['actual_total_fee'] ?? 0

  2. actualTotalFee: json['actual_total_fee'] !=null ? json['actual_total_fee'] : 0