我们是否应该对模型使用 "late" 来修复安全无效错误
Should we use "late" for Model to fix safety-null error
class ItemModel {
late int _page;
late int _total_results;
late int _total_pages;
late List<_Result> _results = [];
ItemModel.fromJson(Map<String, dynamic> parsedJson) {
// debugPrint(parsedJson['results'].length);
_page = parsedJson['page'];
_total_results = parsedJson['total_results'];
_total_pages = parsedJson['total_pages'];
List<_Result> temp = [];
for (int i = 0; i < parsedJson['results'].length; i++) {
_Result result = _Result(parsedJson['results'][i]);
temp.add(result);
}
_results = temp;
}
List<_Result> get results => _results;
int get total_pages => _total_pages;
int get total_results => _total_results;
int get page => _page;
}
我可以使用 late 来修复 不可为 null 的实例字段 '_page' 必须初始化。
尝试添加初始化表达式,或在此构造函数中添加字段初始化器,或将其标记为“延迟”? 错误。
或者我可以使用 ?
int? _page;
为了? : 我得到这个错误 A value of type 'int?' can't be returned from the function 'page' because it has a return 类型 'int'
哪个更好?
感谢您的回复!
我个人会为您的对象创建一个构造函数,并让您的 JSON 解析一个返回 class 实例的工厂构造函数。通过这样做,我们可以跳过 late
变量的使用:
class ItemModel {
final int page;
final int total_results;
final int total_pages;
final List<_Result> results;
const ItemModel({
required this.page,
required this.total_results,
required this.total_pages,
required this.results,
});
factory ItemModel.fromJson(Map<String, dynamic> parsedJson) => ItemModel(
page: parsedJson['page'] as int,
total_results: parsedJson['total_results'] as int,
total_pages: parsedJson['total_pages'] as int,
results: [
for (var i = 0; i < parsedJson['results'].length; i++)
_Result(parsedJson['results'][i])
],
);
}
如果你还想要吸气剂:
class ItemModel {
final int _page;
final int _total_results;
final int _total_pages;
final List<_Result> _results;
const ItemModel({
required int page,
required int total_results,
required int total_pages,
required List<_Result> results,
}) : _page = page,
_total_results = total_results,
_total_pages = total_pages,
_results = results;
factory ItemModel.fromJson(Map<String, dynamic> parsedJson) => ItemModel(
page: parsedJson['page'] as int,
total_results: parsedJson['total_results'] as int,
total_pages: parsedJson['total_pages'] as int,
results: [
for (var i = 0; i < parsedJson['results'].length; i++)
_Result(parsedJson['results'][i])
],
);
List<_Result> get results => _results;
int get total_pages => _total_pages;
int get total_results => _total_results;
int get page => _page;
}
class ItemModel {
late int _page;
late int _total_results;
late int _total_pages;
late List<_Result> _results = [];
ItemModel.fromJson(Map<String, dynamic> parsedJson) {
// debugPrint(parsedJson['results'].length);
_page = parsedJson['page'];
_total_results = parsedJson['total_results'];
_total_pages = parsedJson['total_pages'];
List<_Result> temp = [];
for (int i = 0; i < parsedJson['results'].length; i++) {
_Result result = _Result(parsedJson['results'][i]);
temp.add(result);
}
_results = temp;
}
List<_Result> get results => _results;
int get total_pages => _total_pages;
int get total_results => _total_results;
int get page => _page;
}
我可以使用 late 来修复 不可为 null 的实例字段 '_page' 必须初始化。 尝试添加初始化表达式,或在此构造函数中添加字段初始化器,或将其标记为“延迟”? 错误。
或者我可以使用 ?
int? _page;
为了? : 我得到这个错误 A value of type 'int?' can't be returned from the function 'page' because it has a return 类型 'int'
哪个更好?
感谢您的回复!
我个人会为您的对象创建一个构造函数,并让您的 JSON 解析一个返回 class 实例的工厂构造函数。通过这样做,我们可以跳过 late
变量的使用:
class ItemModel {
final int page;
final int total_results;
final int total_pages;
final List<_Result> results;
const ItemModel({
required this.page,
required this.total_results,
required this.total_pages,
required this.results,
});
factory ItemModel.fromJson(Map<String, dynamic> parsedJson) => ItemModel(
page: parsedJson['page'] as int,
total_results: parsedJson['total_results'] as int,
total_pages: parsedJson['total_pages'] as int,
results: [
for (var i = 0; i < parsedJson['results'].length; i++)
_Result(parsedJson['results'][i])
],
);
}
如果你还想要吸气剂:
class ItemModel {
final int _page;
final int _total_results;
final int _total_pages;
final List<_Result> _results;
const ItemModel({
required int page,
required int total_results,
required int total_pages,
required List<_Result> results,
}) : _page = page,
_total_results = total_results,
_total_pages = total_pages,
_results = results;
factory ItemModel.fromJson(Map<String, dynamic> parsedJson) => ItemModel(
page: parsedJson['page'] as int,
total_results: parsedJson['total_results'] as int,
total_pages: parsedJson['total_pages'] as int,
results: [
for (var i = 0; i < parsedJson['results'].length; i++)
_Result(parsedJson['results'][i])
],
);
List<_Result> get results => _results;
int get total_pages => _total_pages;
int get total_results => _total_results;
int get page => _page;
}