如何在 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
您可以通过两种方式完成:
actualTotalFee: json['actual_total_fee'] ?? 0
actualTotalFee: json['actual_total_fee'] !=null ? json['actual_total_fee'] : 0
我正在调用具有混合值的 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
您可以通过两种方式完成:
actualTotalFee: json['actual_total_fee'] ?? 0
actualTotalFee: json['actual_total_fee'] !=null ? json['actual_total_fee'] : 0