我有一個模型類,其中 Api 被決議
class MovieDetail {
final int id;
final bool adult;
final int budget;
final List<Genre> genres;
final List<Company> companies;
final String releaseDate;
final int runtime;
...
這是電影回應的完整代碼:
import 'movie_detail.dart';
class MovieDetailResponse {
final MovieDetail movieDetail;
final String error;
MovieDetailResponse(this.movieDetail, this.error);
MovieDetailResponse.fromJson(Map<String, dynamic> json)
: movieDetail = MovieDetail.fromJson(json),
error = "";
MovieDetailResponse.withError(String errorValue)
: movieDetail = MovieDetail(null, null, null, null, null, "", null),
error = errorValue;
}
這是它顯示錯誤的確切部分:
MovieDetailResponse.withError(String errorValue)
: movieDetail = MovieDetail(null, null, null, null, null, "", null),
error = errorValue;
升級顫振后出現錯誤,這是錯誤日志:
引數型別“Null”不能分配給引數型別“int”。引數型別“Null”不能分配給引數型別“bool”。引數型別“Null”不能分配給引數型別“int”。引數型別“Null”不能分配給引數型別“List”。引數型別“Null”不能分配給引數型別“List”。引數型別“Null”不能分配給引數型別“int”。
那么當它回傳null時我可以做些什么來定義null?
uj5u.com熱心網友回復:
如果您想在模型的屬性中插入空值,那么您必須像這樣使這些屬性可以為空。
class MovieDetail {
final int? id;
final bool? adult;
final int? budget;
...
}
并嘗試使用 null 安全運算子訪問該值,如下所示:
final movieDetails = MovieDetails(1, null, null, ...);
log(movieDetails?.id)
log(movieDetails?.adult)
uj5u.com熱心網友回復:
您需要創建一個也接受空值的模型,因此您的模型應如下所示。
class MovieDetail {
int? _id;
bool? _adult;
int? _budget;
int? _runtime;
String? _releaseDate;
MovieDetail({
int? id,
bool? adult,
int? budget,
int? runtime,
String? releaseDate,
}) {
_id = id;
_adult = adult;
_budget = budget;
_runtime = runtime;
_releaseDate = releaseDate;
}
int? get id => _id;
bool? get adult => _adult;
int? get budget => _budget;
int? get runtime => _runtime;
String? get releaseDate => _releaseDate;
//and so one....
}
您可以訪問 int 的值,如下所示。
final movieDetails = MovieDetails(id:1);
debugPrint(movieDetails?.id)
int id = movieDetails?.id ?? 0; // which returns 0 when the id value is null.
如果您希望您的 int 值不為 null,那么您也可以在模型類中創建函式以獲取 int 值,即使它為 null。
class MovieDetail {
/// Same as above movie class with below functions
int getMovieId(){
return id ?? 0; // if id is available it will return id else 0 value
}
bool isAdult(){
return adult ?? false; // By default it is false.
}
/// and so on...
您還可以使用相同的命名建構式為變數設定默認值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/518266.html
標籤:json扑api镖
下一篇:嘗試運行pub時收到錯誤
