у меня есть объект json, который включает объект, который может быть нулевым. вот мой json:
I/flutter (23570): ║ {
I/flutter (23570): ║ elements: [
I/flutter (23570): ║ {
I/flutter (23570): ║ id: 1,
I/flutter (23570): ║ name: "a1",
I/flutter (23570): ║ owner: {firstName: امین, lastName: جمالی, mobile: 9014523821}
I/flutter (23570): ║ },
I/flutter (23570): ║ {id: 2, name: a2}
I/flutter (23570): ║ ],
I/flutter (23570): ║ totalElements: 2
I/flutter (23570): ║ }
владелец, указанный в первом элементе, имеет данные, а второй пуст. вот моя модель просмотра:
class UnitItemViewModel {
final int id;
final String name;
UnitOwner? owner;
UnitItemViewModel({
required this.id,
required this.name,
this.owner,
});
factory UnitItemViewModel.fromJson(final Map<String, dynamic> json) =>
UnitItemViewModel(
id: json['id'],
name: json['name'],
owner: UnitOwner.fromJson(json['owner']),
);
}
class UnitOwner {
final String firstName, lastName;
final String mobile;
UnitOwner({
required this.firstName,
required this.lastName,
required this.mobile,
});
factory UnitOwner.fromJson(final Map<String, dynamic> json) => UnitOwner(
firstName: json['firstName'],
lastName: json['lastName'],
mobile: json['mobile'],
);
}
при разборе я получил это исключение:
E/flutter (23570): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception:
NoSuchMethodError: The method '[]' was called on null.
E/flutter (23570): Receiver: null
E/flutter (23570): Tried calling: []("firstName")
и вот мой репозиторий:
final items = (data['elements'] as List)
.map((final e) => UnitItemViewModel.fromJson(
e as Map<String, dynamic>,
))
.toList();
любая идея будет отличной.





В этой строке вы получаете ошибку, потому что json это null
firstName: json['firstName']
Вы должны изменить эту функцию fromJson следующим образом:
factory UnitOwner.fromJson(final Map<String, dynamic>? json) => UnitOwner(
firstName: json?['firstName'] ?? '',
lastName: json?['lastName'] ?? '',
mobile: json?['mobile'] ?? '',
);